Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как посмотреть все свойства COM Объекта (Excel)

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

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

Или подскажите, пожалуйста, другой вариант создания точной копии по шаблону.
   lodger
 
1 - 28.07.20 - 00:48
сохранить копию не дешевле?
   slafor
 
2 - 28.07.20 - 01:54
А как сделать так, чтобы можно было заполнять ее из внешней обработки? Копию (шаблон) еще же где-то хранить надо - я так понимаю, в виде двоичных данных? Как посоветуете, чтобы конфигурацию не менять (конфигурация - Альфа Авто)?
   slafor
 
3 - 28.07.20 - 12:24
Подскажите, где можно хранить шаблон файла в формате Excel в виде двоичных данных в БД на типовой конфигурации, и где можно подробнее почитать о том, как с ним работать?
   Aleksey
 
4 - 28.07.20 - 12:29
макет?
   fisher
 
5 - 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;
   fisher
 
6 - 28.07.20 - 12:51
Сейчас бы, наверное, смотрел в сторону прямого редактирования xlsx. На просторах можно найти примеры.
   lodger
 
7 - 28.07.20 - 12:51
(5) недавно сделал для себя открытие, что если в Excel перед манипуляциями с данными выключить отображение и расчёт по формулам - скорость работы Application драматически увеличивается.
   lodger
 
8 - 28.07.20 - 12:52
(6) а сейчас вообще проще табдок нарисовать так, чтобы в xls красиво сохранялся.
   fisher
 
9 - 28.07.20 - 12:56
(8) Иногда необходимо работать с предоставленными шаблонами.
   lodger
 
10 - 28.07.20 - 13:04
(9) число контрольных точек всё равно конечно. в большинстве случаев можно сделать так, чтобы твой файл был принят оппозитной стороной(если это автоматический сервис).
   2S
 
11 - 28.07.20 - 13:06
как вариант может макрос записать, в потом читать его
   mikecool
 
12 - 28.07.20 - 13:10
открыть VBA и смотреть справку

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.