Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Microsoft Word 2007 VSTO,是否在Word外部创建表?_C#_Performance_Ms Word_Vsto - Fatal编程技术网

C# Microsoft Word 2007 VSTO,是否在Word外部创建表?

C# Microsoft Word 2007 VSTO,是否在Word外部创建表?,c#,performance,ms-word,vsto,C#,Performance,Ms Word,Vsto,我正在使用VSTO将数据填充到MicrosoftWord2007模板中的表中。数据量各不相同,填写多个页面(+50)需要花费大量时间 我用于创建表的代码: Word.Table table = doc.Tables.Add(tablePosition, numberOfRows, 8, r

我正在使用VSTO将数据填充到MicrosoftWord2007模板中的表中。数据量各不相同,填写多个页面(+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是否还有其他可能性?

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

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

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

@Lul:感谢您对这个主题的思考。:)如何将数据插入Word表?从数据库外的for/next循环开始?从数组中的for/next?@Otaku:首先,我执行一个Linq2SQL查询,并在下面的foreach语句中,将查询中的数据插入表当前行的每个单元格中。-这有什么意义吗?@Amissico:谢谢你的建议。我会尽快尝试它们=)