Имя: Пароль:
1C
1С v8
Вставка гиперссылок в Excel
0 Dolphinbet
 
27.07.16
17:02
Добавляю в отчет в экселе гиперссылки с помощью следующего кода:

excel = Новый COMОбъект("Excel.Application");
Книга = excel.WorkBooks.Open(ПутьКФайлуотчета);
List = Книга.Sheets(1);
ВсегоСтрок = List.Cells(1,1).SpecialCells(11).Row;
Для i=1 по ВсегоСтрок цикл
Hyperlink = "...";
List.Hyperlinks.Add(List.Cells(i,5), Hyperlink, , , СокрЛП(List.Cells(i,5).Text));
КонецЦикла;

Все работает, но при большом количестве строк процесс занимает много времени, хотелось бы его ускорить, кто-нибудь может предложить более быстрый вариант?
1 В тылу врага
 
27.07.16
17:05
у нас так:

Ячейка = Лист.Cells(Строка, й0);
Ячейка.Hyperlinks.Add(Ячейка, ГиперСсылка);
2 Dolphinbet
 
27.07.16
17:07
(1) ну это тоже самое)
3 Dolphinbet
 
27.07.16
17:12
Хотелось бы посмотреть на вариант работы с Excel через ADODB... как через него вставить гиперссылки?
4 Dolphinbet
 
27.07.16
17:51
Есть вообще какие-нибудь хорошие библиотеки для работы с файлами в формате xlsx помимо COMОбъект("Excel.Application"), который использовать вроде как не рекомендует Майкрософт?
5 Tatitutu
 
27.07.16
18:03
Запиши макрос средствами EXCEL в личную книгу макросов и вызывай макрос из 1С (если задача локальная то в разы быстрее)
6 b_ru
 
27.07.16
19:32
>>Все работает, но при большом количестве строк процесс занимает много времени, хотелось бы его ускорить, кто-нибудь может предложить более быстрый вариант?

Сформируй табличный документ с гиперссылками, сохрани в xlsx

>>помимо COMОбъект("Excel.Application"), который использовать вроде как не рекомендует Майкрософт?
наркоман штоле©

>>если задача локальная то в разы быстрее
и ты наркоман

Еще я у тебя в коде Application.ScreenUpdating = Ложь
не вижу
7 MaxS
 
27.07.16
19:43
Средствами 1С записать xlsx, вместо гиперссылки какое-нибудь значение.
Распаковать файл и поменять текст на гиперссылки, запаковать обратно.
Предварительно сделать пример файла с гипер сылкой, чтобы было понятно что писать в xml.
Сам так не делал, предположил просто. ))
8 romix
 
27.07.16
21:46
Невидимость там включить...
9 Dolphinbet
 
28.07.16
10:03
(6)Сформируй табличный документ с гиперссылками, сохрани в xlsx

Не очень понял, как в табличный документ 1С можно вставить гиперссылки?..

Application.ScreenUpdating = Ложь

Это зачем?
10 Dolphinbet
 
28.07.16
10:07
(7) да, чисто теоретически можно распаковать файл xlsx и работать с xml файлами. Однако трудоемкость данной задачи приличная)
11 Dolphinbet
 
28.07.16
10:16
(6)>>помимо COMОбъект("Excel.Application"), который использовать вроде как не рекомендует Майкрософт?
наркоман штоле©

https://support.microsoft.com/ru-ru/kb/257757

Корпорация Microsoft не советует производить и не поддерживает серверной автоматизации Office.
12 Dolphinbet
 
28.07.16
10:17
Корпорация Microsoft на сегодняшний день не рекомендует производить и не поддерживает автоматизацию программ из пакета Microsoft Office с помощью автоматических, неинтерактивных клиентских приложений или компонентов (включая ASP, DCOM и службы NT), поскольку при запуске в этом окружении программы пакета Office могут работать нестабильно или зависать.
13 b_ru
 
28.07.16
13:21
(9) Application.ScreenUpdating = Ложь  отключает обновление экрана Excel и ускоряет его работу.

(11) Ты это &НаСервере запускаешь?
14 Dolphinbet
 
28.07.16
15:42
(13) да, на сервере (в фоновом задании формируются отчеты, сохраняются в эксель и обрабатываются определенным образом). Так на экране и так ничего не отображается...