Имя: Пароль:
1C
1С v8
Как посмотреть все свойства COM Объекта (Excel)
,
0 slafor
 
28.07.20
00:04
Задача: надо создать точную копию файла Эксель (такая же ширина колонок, объединения ячеек, те же шрифты...). Разумеется, со своими данными.

Для этого попробовал прочитать все свойства объекта Excel.Application. В отладчике, конечно, все видно, но неудобно - создал текстовый документ, в который пишутся все эти данные, чтобы потом использовать их при написании кода. Можно ли все свойства разом обойти в цикле?

Или подскажите, пожалуйста, другой вариант создания точной копии по шаблону.
1 lodger
 
28.07.20
00:48
сохранить копию не дешевле?
2 slafor
 
28.07.20
01:54
А как сделать так, чтобы можно было заполнять ее из внешней обработки? Копию (шаблон) еще же где-то хранить надо - я так понимаю, в виде двоичных данных? Как посоветуете, чтобы конфигурацию не менять (конфигурация - Альфа Авто)?
3 slafor
 
28.07.20
12:24
Подскажите, где можно хранить шаблон файла в формате Excel в виде двоичных данных в БД на типовой конфигурации, и где можно подробнее почитать о том, как с ним работать?
4 Aleksey
 
28.07.20
12:29
макет?
5 fisher
 
28.07.20
12:48
Решал аналогичную задачу. Шаблон сохранял в хранилище значения в служебном справочнике. В типовой можно, наверное, в каких-нить "присоединенных файлах".
Заполнение и изменение свойств ячеек через Excel.Application работает медленно. На больших файлах это превращается в реальную проблему. Благо ексель позволяет "пакетную" работу с ячейками с помощью COMSafeArray - это сильно помогает.
Копирование горизонтальной области шаблона:
    Sheet.Rows("" + СтрокаНачало + ":" + СтрокаКонец).Select();
    ExcelApp.Selection.Copy();
    Sheet.Rows("" + НомерНовойСтроки + ":" + НомерНовойСтроки).Select();
    ExcelApp.Selection.Insert(-4121); // вставка со сдвигом вниз

Заполнение через COMSafeArray:
    COMArray = Новый COMSafeArray("VT_VARIANT", КоличествоКолонок, КоличествоСтрок);
        COMArray.SetValue(ОтносительныйИндексКолонки, ОтносительныйИндексСтроки, Значение);
        .....................................................................................
    Sheet.Range(Sheet.Cells(НомерСтрокиНачало, НомерКолонкиНачало), Sheet.Cells(НомерСтрокиКонец, НомерКолонкиКонец)).Value = COMArray;
6 fisher
 
28.07.20
12:51
Сейчас бы, наверное, смотрел в сторону прямого редактирования xlsx. На просторах можно найти примеры.
7 lodger
 
28.07.20
12:51
(5) недавно сделал для себя открытие, что если в Excel перед манипуляциями с данными выключить отображение и расчёт по формулам - скорость работы Application драматически увеличивается.
8 lodger
 
28.07.20
12:52
(6) а сейчас вообще проще табдок нарисовать так, чтобы в xls красиво сохранялся.
9 fisher
 
28.07.20
12:56
(8) Иногда необходимо работать с предоставленными шаблонами.
10 lodger
 
28.07.20
13:04
(9) число контрольных точек всё равно конечно. в большинстве случаев можно сделать так, чтобы твой файл был принят оппозитной стороной(если это автоматический сервис).
11 2S
 
28.07.20
13:06
как вариант может макрос записать, в потом читать его
12 mikecool
 
28.07.20
13:10
открыть VBA и смотреть справку
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn