|
Как посмотреть все свойства 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 и смотреть справку
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |