![]() |
#1 |
MCTS
|
Размножение таблицы Word
Помогите, пожалуйста, размножить обычную word таблицу в шаблоне *.dot. Наверняка кто-нибудь сталкивался с проблемой отгружать данные в отчет word, причем количество этих данных не было известно, и данные эти должны находится в разных таблицах в Word документе... На данный момент есть два решения:
1) выделение необходимой таблицы в шаблоне, а затем обычное копирование и вставка через буфер обмена. НЕ ГОДИТСЯ - поскольку затирается буфер обмена. 2) сделать шаблон с n-м количеством этих самых таблиц, а затем после подсчета количества данных удалить с конца ненужное количество. НЕ ГОДИТСЯ - поскольку количество данных во многих случаях остается неизвестным и может превысить количество уже созданных в шаблоне. К тому же черезчур громоздко... Вообщем, помогите найти более изящный способ |
|
![]() |
#2 |
Участник
|
можно сделать макрос в шаблоне, который будет создавать нужную таблицу с нужным форматированием в нужном месте, ну и вызывать его по мере необходимости
|
|
![]() |
#4 |
MCTS
|
так в том и дело, что ничего создавать не нужно, просто напросто необходимо копирнуть существующую таблицу (будет вернее сказать некоторый Range, в который входит она, еще 2 таблицы и некоторые другие элементы) после нее самой несколько раз, и насчет макроса, ведь можно его же написать в коде X++... К тому же создавать ту самую таблицу по элементарным кирпичикам - это гора работы: невидимые линии, и т.п., и еще копировать нужно не одну таблицу а целых три поэтому такое решение усложняется трижды, кроме таблиц, там еще и линия с надписью ниже...
2 Belugin честно говоря даже не знаю, помоему это даже более громоздко чем куча таблиц, с последующим удалением... |
|
![]() |
#5 |
Участник
|
Я в-общем так, для обозначения возможности.
С точки зрения "громоздко" есть 2 аспекта: *Разработка: можно позльзоваться XSLT внутри ворда, при этом использовать ворд как визуальный редактор - в некоторых случаях так может *при генерации отчета ворд вообще не нужен - только XSLT процессор. Таким образом, всё пролисходит очень быстро и может осуществляться вообще без наличия ворда - например, на сервере Но недостатков тоже полно |
|
![]() |
#6 |
MCTS
|
А как насчет варианта сохранить нужные данные из буфера обмена, покопировать таблички, восстановить данные в буфер обмена?
|
|
![]() |
#7 |
MCTS
|
2 E@gle: То есть, что то типа Buffer.Push() и Buffer.Pop()? Была такая идея, если в курсе как реализовать, то подскажите пожалуйста
2 Belugin: спасибо, обязательно попробую эту штуку... таким образом, если это возможно (сохр/вост) буфера, то выходит, это единственное простейшее решение... Последний раз редактировалось Eldar9x; 15.01.2007 в 13:10. |
|
![]() |
#8 |
MCTS
|
Тогда вопрос: вам надо сохранить весь буфер обмена или какой-нибудь определенный тип (формат) буфера?
Как выпонимаете сохранить весь будет сложнее. |
|
|
За это сообщение автора поблагодарили: Eldar9x (1). |
![]() |
#9 |
MCTS
|
в буфере обмена может быть все что угодно, отсюда вывод: либо сохранить весь, либо сделать так Сохранение/восстановление буфера обмена думаю это и есть решение
|
|
![]() |
#10 |
MCTS
|
только что вспомнил, буфер обмена - опасная вещица, представляете что будет, если во время формирования отчета пользователь нажмет Copy в другом приложении...
|
|
![]() |
#11 |
MCTS
|
Наша компания достаточно широко использует буфер обмена при формировании отчетов (кстати и вашу задачу решали именно таким способом). Многими такими отчетами пользуются уже больше года. Нареканий пока нет.
Если найдете решение в обход буфера обмена - напишите. |
|
![]() |
#12 |
MCTS
|
решили оставить метод с удалением лишних таблиц, + применение эвристики
![]() |
|
![]() |
#13 |
Участник
|
Вот именно для того, чтоб не было "так муторно" предлагаю делать именно макрос в шаблоне. Так попроще создать новую таблицу по образу и подобию уже существующей.
|
|
![]() |
#14 |
Пенсионер
|
Я на форуме уже говорил как мы решали эту проблемму:
Надо просто создать файл Word из шаблона, и просто этот же шаблин вставлять в этот файл столько раз сколько нужно экземпляров... но придется доработать методы работы с таблицами Word на предмет навигации с использованием параметров: таблица, строка, столбец
__________________
![]() А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ |
|
![]() |
#15 |
MCTS
|
2 Ashir: а таким образом можно копировать целые интервалы в документе?, если да, то, пожалуйста напишите как (или дайте ссылку)
2 blokva: а поподробней насчет этого способа, как реализовать? |
|
![]() |
#16 |
Участник
|
Я имею в виду не копирование а создание (ведь любое копирование будет осуществляться через буфер) новой таблички по заранее определённому формату. Этот подхед не универсален, но в данном слечае может подойти.
Начните запись макроса и создайте таблицу с требуемым форматированием. Потом этот макрос просто надо будет вызвать из AxЫ. Последний раз редактировалось Ashir; 16.01.2007 в 12:27. |
|
![]() |
#17 |
Пенсионер
|
Цитата:
2. создаем на его основе файл, получаем таблицу 1, которую заполняем данными 3 вставляем в данный файл тот же файл шаблона функцией ComWordDocument_RU.insertDocFile 4. в результате получаем таблицу 2 в этом же файле, которую тоже заполняем. 5. и т.д. с п.3 5. для заполнения каждой таблицы необходима правильная навигация, т.к. букмарки не подходят из-за того, что они всегда будут ссылаться на 1-ую таблицу. 6. для этого надо создать свои методы вставления данных в ячейки таблицы (для того, чтобы понять как, посмотрите методы getPosEndOfTable и tableInsertValue того же класса) зы: я просто не могу найти код, который мы делали в 2.5
__________________
![]() А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ Последний раз редактировалось blokva; 16.01.2007 в 13:51. |
|
|
За это сообщение автора поблагодарили: Eldar9x (1). |
![]() |
#18 |
MCTS
|
и (или)
Б. (ежегодный дополнительный оплачиваемый отпуск, учебный, без сохранения заработной платы и другие (указать)) На календарных дней с по |
|
![]() |
#19 |
MCTS
|
вообщем вот такой интервал должен копироваться, причем Б меняется, кроме того над строкой должна быть линия и еще 3 таблицы со сложным форматированием (здесь не удалось отобразить). Как все это создавать по формату и как вообще создать такой формат даже не представляю...
2 blokva: действительно, решение лишено перегруженности, но есть один минус: придется таскать два шаблона для одного документа. По-поводу навигации нет проблем, ведь достаточно знать порядковый номер первой таблицы... |
|
![]() |
#20 |
Пенсионер
|
Цитата:
Сообщение от Eldar9x
![]() вообщем вот такой интервал должен копироваться, причем Б меняется, кроме того над строкой должна быть линия и еще 3 таблицы со сложным форматированием (здесь не удалось отобразить). Как все это создавать по формату и как вообще создать такой формат даже не представляю...
2 blokva: действительно, решение лишено перегруженности, но есть один минус: придется таскать два шаблона для одного документа. По-поводу навигации нет проблем, ведь достаточно знать порядковый номер первой таблицы...
__________________
![]() А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|