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