2010-01-19 3 views
2

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

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

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

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

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

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

, который был бы под рукой.

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

+0

Как вы вставляете данные в таблицу Word? Из цикла for/next из БД? От a for/next от массива? –

+0

@Otaku: Сначала я выполняю запрос Linq2SQL и в следующем предложении foreach я вставляю данные из запроса в каждую ячейку в текущей строке таблицы. - Имеет ли это смысл? – Chau

ответ

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

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

+0

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

0

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

+0

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

Смежные вопросы