|
|
|
Быстрое заполнение таблицы в MS Word
|
|||
|---|---|---|---|
|
#18+
Всем доброго дня! Возникала проблема, над которой бьюсь уже 2 неделю. Задача такая, сформировать табличный отчет в Word. Данные хранятся на MS SQL Server. Заполнение каждой ячейки отдельно не годиться очень долго, использование Excel тоже, поэтому для быстрого заполнения делаю следующее: - Открываю Recordset (rsList) - В цикле по записям формирую строку, где значения разделяются спец. символом TAB (vbTab) и в конце прибавляю Enter(vbCrlf), получается строка (не массив), что-то вроде: Иванов vbTab Иван vbTab Сергеевич vbCrlf Петров vbTab Сергей vbTab Иванович vbCrlf Сидоров vbTab Сергей vbTab Иванович vbCrlf (Это условное представление переменной) - Открываю документ Word - Прохожу по всем таблицами и нужную таблицу присваиваю объекту (TableWord) - В конец таблицы добавляю нужное количество строк = количеству записей в рекордсете Выделяю сразу все мне нужные строки вот таким кодом. Код: plaintext 1. 2. 3. 4. 5. Это аналогично вставки в Excel, т.е таб - это переход на следующую ячейку, Enter - на следующую строчку. Тут все бы и хорошо и все работает, но надо чтобы Word во время формирования был скрыт. Вот тут и возникает косяки, то что при Visible=false программа не выделяет все записи, причем каждый раз колличество выделенных строк разное и соответственно при вставки данных, заполняются только выделеные строки, вот такая вот байда Но если за этим наблюдать то все срабатывает хорошо, какой то глюк офиса, как бы его обойти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2009, 16:05 |
|
||
|
Быстрое заполнение таблицы в MS Word
|
|||
|---|---|---|---|
|
#18+
Можно сделать иначе, вставлять строку в таблицу, добавленная строка при этом выделенная, и можно сразу вставить однe строчку данных и так далее Код: plaintext 1. 2. 3. 4. 5. 6. 7. Но это удлиняет процесс в несколько раз, к примеру, заполнение 800 строк по 1 методу (выделить все строки и вставить) занимает секун 10, то таким образом больше минуты Специалисты SQL.ru подскажите плиз, задачка специфичная, но очень хотелось бы решить. Может быть отображать документ но держать его свернутым, но при обращении в word объектам он будет пытаться отобразиться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2009, 22:07 |
|
||
|
Быстрое заполнение таблицы в MS Word
|
|||
|---|---|---|---|
|
#18+
Сам не знаю, откуда я это знаю, но так Код: plaintext 1. 2. 3. 4. Чисто интуитивно предполагаю, что лучше не использовать буфер, а из текстовой переменной заполнить прямиком в таблицу. Может кто-то подскажет как, а то слету не получилось, возможно нельзя без цикла - только буфер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2009, 22:17 |
|
||
|
Быстрое заполнение таблицы в MS Word
|
|||
|---|---|---|---|
|
#18+
Я помочь в данном вопросе не смогу, но хотелось бы узнать, почему для выведение отчетов нельзя использовать Ексель, или даже лучше Акцесс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2009, 22:20 |
|
||
|
Быстрое заполнение таблицы в MS Word
|
|||
|---|---|---|---|
|
#18+
Помогло или нет отпишись, самому интересно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2009, 22:24 |
|
||
|
Быстрое заполнение таблицы в MS Word
|
|||
|---|---|---|---|
|
#18+
m, Да дело в том что Word более понятен и знаком пользователям, и сделав такой механизм я смогу делать более сложные отчеты, к примеру заполнение нескольких таблиц на одной странице и не важно как таблицы располагаются рядом или паралельно, в Excell так сделать сложнее. Excel я использую и он конечно удобен мне как программисту, но вот делаю я не для себя )) Deggasad Сейчас буду пробывать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2009, 22:39 |
|
||
|
Быстрое заполнение таблицы в MS Word
|
|||
|---|---|---|---|
|
#18+
Я могу ошибаться, но вставить данные из БД в Эксель на порядок легче, чем в Ворд. Например через тоже ADODB прям запросом из таблицы БД в лист Экселя. А если Вы хотите более сложные отчеты делать, то для этого есть Акцесс. Если отчет должен быть обрабатываемым, тогда связка Эксель-Ворд. Всего лишь мое мнение :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2009, 23:01 |
|
||
|
Быстрое заполнение таблицы в MS Word
|
|||
|---|---|---|---|
|
#18+
Deggasad, Ты гений )) Работает! Я еще потестирую, разные варианты документов, но вот при большом количестве строк 1 метод всегда падал. Твой способ - все отлично и главное быстро, тут видимо уже либо все выделит либо вообще ничего)). Буду изучать объект Range ему должное внимание не уделил, виноват. Выход таков: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Здорово, теперь за считанные секунды можно вывести в word кучу инфы Тест: Вставить 896 строк из рекордсета (вышло 47 страниц это 20 строк на лист примерно) + программное форматирование текста: - Выделение по строчке заняло 2 мин 20 сек - Выделить и вставить - 50 секунд На практике будет еще быстрее т.к записей реально будет по 100-200 Надеюсь, подводных камней не найду, кого заинтересовал данный метод пишите! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2009, 23:33 |
|
||
|
Быстрое заполнение таблицы в MS Word
|
|||
|---|---|---|---|
|
#18+
m, С Вами согласен! Делаю только для удобства пользователей )) Access удобно использовать когда делаешь проект в нем, я же хочу осущесвить это в своей программе, В Access нет возможности такого гибкого форматирования отчета как в Word и Excel, но прога тоже очень хорошая! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2009, 23:50 |
|
||
|
Быстрое заполнение таблицы в MS Word
|
|||
|---|---|---|---|
|
#18+
Меня тоже больше устроил бы Эксель (рассылку можно в PDF) Но есть своя логика (плюсы) и отчетов в ворде. Например легче использовать информацию в совокупности с текстом особенно когда не знаешь точный объем информации. Если информация при этом не на ссылках, а в самом ворде, то ее легко подправить или переформатировать, касается обычных пользователей, не искушенных тонкостями информационных систем. winww По теме: Я думал, что основная наша задача как раз избежать метода Select , а ты продолжаешь его упорно использовать, Зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2009, 00:39 |
|
||
|
Быстрое заполнение таблицы в MS Word
|
|||
|---|---|---|---|
|
#18+
Deggasad, Это я исправил, просто сразу когда проверял хотел глянуть что выделится при Select, сейчас использую сразу метод paste Код: plaintext 1. 2. 3. По поводу Word отчетов, Бывает что приходится готовить отчет (документ), где не только нужно вывести табличные данные, а также дописать сопроводительный текст, схемы и т.д, и приходится такой отчет собирать по кусочкам из нескольких, тут Excel не удобен из за табличной структуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2009, 11:00 |
|
||
|
Быстрое заполнение таблицы в MS Word
|
|||
|---|---|---|---|
|
#18+
на заметку: Maximising the performance of Word tables ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2009, 10:24 |
|
||
|
|

start [/forum/topic.php?fid=61&fpage=176&tid=2178713]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
24ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
82ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 349ms |

| 0 / 0 |
