Microsoft Word 2007 VSTO, создать таблицу вне слова?

2

Я использую VSTO для заполнения данных в таблице в шаблоне Microsoft Word 2007. Количество данных варьируется и заполнение многих страниц (+50) занимает много времени.

Код, который я использую для создания таблицы:

Word.Table table = doc.Tables.Add(tablePosition, 
                                  numberOfRows, 
                                  8, 
                                  ref System.Reflection.Missing.Value, 
                                  ref System.Reflection.Missing.Value);

Я подозреваю, что потребление времени связано с обменом данными между Visual Studio (С#) и Word каждый раз, когда я вставляю данные в ячейку. Если это так, может быть быстрее создать таблицу на С#, а затем вставить ее в Word.

Microsot.Office.Interop.Word.Table - абстрактный класс, поэтому я не могу этого сделать

Word.Table table = new Word.Table();

что было бы удобно.

Существуют ли другие возможности при использовании VSTO?

  • 0
    Как вы вставляете данные в таблицу Word? Из цикла for / next из БД? Из for / next из массива?
  • 0
    @Otaku: сначала я делаю запрос Linq2SQL и в следующем операторе foreach вставляю данные из запроса в каждую ячейку в текущей строке таблицы. - Имеет ли это хоть какой-то смысл?
Теги:
performance
ms-word
vsto

2 ответа

1
Лучший ответ
  • Попробуйте создать таблицу в формате HTML-буфера обмена, добавьте в буфер обмена, затем вставьте.
  • Попробуйте создать таблицу в HTML и вставить ее.
  • Попробуйте создать строку с разделителями табуляции с символом новой строки для каждой записи. Вставьте строку с выбором, конвертируйте выделение в таблицу, используя вкладки в качестве разделителя.
  • Создайте шаблон как XML, преобразуйте данные с помощью Xslt в документ XML Word.
  • Создайте шаблон как "Слияние почты каталога", выполните слияние с данными.

В зависимости от ваших требований, я рекомендую использовать метод слияния, так как пользователь может редактировать шаблон, а слияние почты выполняется быстро, особенно если у вас есть более 50 страниц.

  • 0
    @Amissico: Спасибо за ваши предложения. Я попробую их как только смогу =)
0

Хотя я делаю аналогичные вещи с LabVIEW7.1 и Word2000, проблема аналогична. Я не нашел способ вставить блоки данных (таблицы) с помощью одной команды. Есть даже проблема, когда вставлять отдельные элементы слишком быстро для слова, она иногда висит, чем и должна быть убита, чтобы решить эту проблему. К сожалению, нет события или свойства, которое сигнализирует способность слова принимать следующую команду и набор данных - по крайней мере, я ничего не мог найти. Поскольку это в тестовом секвенсере, у меня есть время, чтобы передать результаты теста в слово с задержками достаточно долго, чтобы предположить, что слово снова готово, когда отправляется следующая часть данных...

  • 0
    @Lul: Спасибо за ваши мысли по этому вопросу. :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню