![]() |
|
Модераторы: MetalFan |
![]()
|
|
| Saddam |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 30.10.2007 Репутация: нет Всего: нет |
Добрый день, проблема вот в чем...
Существует шаблон документа Word, в котором есть "шапка таблицы" какого угодно строения, но последняя строчка шапки заполнена текстовыми метками, обозначающими какие данные должны быть занесены в эти столбцы. В Delphi сформирован объект (коллекция) содержащая номера строк и столбцов таблицы документа Word и значения, которые должны быть туда помещены. На данный момент вставка значений осуществляется поячеечно, то есть берется ячейка таблицы по номеру строки и столбца, туда кладется текст с помощью свойства Table.Cell.Range.Text, и так далее. Если ячеек в таблице несколько сотен, этот процесс занимает долгое время. Крайне необходимо этот процесс ускорить. По поводу метода ConvertToTable - он не подходит из-за того, что полученная табличка в результате конвертации может иметь лишь строго определенную ширину столбцов, либо отформатирована по ширине, либо по значениям ячеек. А мне нужно, чтобы она соответствовала "шапке" таблицы, которая изначально имеется в шаблоне. Жаль, что нет у таблиц ворда свойства Cells, и нельзя передать сразу вариантный массив значений... Есть ли у кого-нибудь соображения насчет этой проблемы? |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 15 Всего: 108 |
есть и Range... по пробуй с ним поиграться... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Saddam |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 30.10.2007 Репутация: нет Всего: нет |
Проблема решена, хотя и не совсем так, как хотелось бы.
Для ускорения операций я был вынужден загружать в фоновом режиме еще и Excel, в памяти формировать прямоугольный вариантный массив, соответствующий табличке и передавать его за одну операцию в Excel:
В этом случае значения "расфасовываются" по ячейкам таблицы мгновенно, затем я забираю полученную табличку и вставляю ее обратно в Word, соблюдая условие - курсор должен находиться сразу под шапкой нужной таблички.
Вообще говоря для этой цели лучше использовать метод PastAppendTable, но он появился только в модуле для WordXP, мне же приходится довольствоваться методом PasteSpecial, который есть в 97 и 2000 версиях. Благодаря этим методам вставляемая табличка автоматически берет себе форматирование последней строки таблицы, под которую осуществляется вставка, включая ширину столбцов. Единственное условие - количество столбцов должно совпадать. Хорошо, если кому-то это поможет. |
||||
|
|||||
![]()
|
| Правила форума "Delphi: ActiveX/СОМ/CORBA" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |