Microsoft Word 2007 VSTO,在word外创建表?

时间:2010-01-19 07:45:14

标签: c# performance ms-word vsto

我正在使用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(C#)和Word之间的通信造成的。如果是这种情况,在C#中创建表可能会更快,然后将其插入Word。

Microsot.Office.Interop.Word.Table 是一个抽象类 - 因此我无法做到这一点

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

本来会很方便。

仅使用VSTO还有其他可能性吗?

2 个答案:

答案 0 :(得分:1)

  • 尝试以HTML剪贴板格式创建表格,添加到剪贴板,然后粘贴。
  • 尝试用HTML创建表格并插入。
  • 尝试使用每行记录的换行符创建制表符分隔的字符串。插入带有选择的字符串,使用制表符作为分隔符将选择转换为表格。
  • 将模板创建为XML,使用Xslt将数据转换为Word XML文档。
  • 将模板创建为“目录邮件合并”,执行与数据的邮件合并。

根据您的要求,我建议使用邮件合并技术,因为用户可以编辑模板,邮件合并速度很快,特别是如果您有50多页。

答案 1 :(得分:0)

虽然我使用LabVIEW7.1和Word2000做类似的事情,但问题是类似的。我还没有找到一种方法来使用一个命令插入数据块(表)。插入单个元素对于单词来说太快时甚至会出现问题,它偶尔会挂起并且必须被杀死才能解决这个问题。不幸的是,没有任何事件或属性可以表示单词接受下一个命令和数据集的能力 - 至少我找不到任何东西。 由于这是在测试序列器中,我有时间将测试结果输入到字中,延迟时间足够长,以便在发送下一部分数据时再次准备好字...