代码之家  ›  专栏  ›  技术社区  ›  Chau

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

  •  2
  • Chau  · 技术社区  · 15 年前

    我正在使用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 回复  |  直到 8 年前
        1
  •  1
  •   AMissico    14 年前
    • 尝试以HTML剪贴板格式创建表,添加到剪贴板,然后粘贴。
    • 尝试在HTML中创建表并插入它。
    • 尝试用换行符为每个记录创建制表符分隔的字符串。插入带选定内容的字符串,使用制表符作为分隔符将选定内容转换为表。
    • 将模板创建为XML,用XSLT将数据转换为Word XML文档。
    • 将模板创建为“目录邮件合并”,使用数据执行邮件合并。

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

        2
  •  0
  •   Tim Cooper    13 年前

    尽管我对LabVIEW7.1和Word2000做了类似的事情,但问题是相似的。我还没有找到用一个命令插入数据块(表)的方法。在Word中插入单个元素的速度太快时甚至存在一个问题,它有时会挂起,为了解决这个问题,必须杀死它。不幸的是,没有事件或属性表示Word能够接受下一个命令和数据集-至少我找不到任何内容。 因为这是在一个测试序列器中,我有时间将测试结果输入到Word中,延迟时间足够长,以假设在发送下一部分数据时Word再次准备就绪…