【问题标题】:C# Word Interop cannot Add documentC# Word Interop 无法添加文档
【发布时间】:2016-12-14 15:49:20
【问题描述】:

我尝试使用 Microsoft.Office.Interop.Word 从模板添加文档,使用:

Microsoft.Office.Interop.Word.Aplication wordApp = 
             new Microsoft.Office.Interop.Word.Application();

wordApp.Documents.Add("somedoc.dotx");

但我总是收到未处理的COMException,告诉我文件可能已损坏。我尝试了docdocxdotx,我确定该文件存在,因为我之前检查过它。当我在 Word 中打开文件时,它可以正常打开。

【问题讨论】:

  • 第一个参数是 模板。 “somedoc.docx”听起来不像一个模板,尽管我们似乎永远无法在 SO 依赖有效的代码 sn-ps。哦快乐。考虑根本不传递任何参数,在保存文件之前不要命名文件。
  • @HansPassant 我也尝试了实际的模板(如我的问题中所述)。而且我确实需要使用该文件作为模板,我稍微澄清了我的问题。

标签: c# office-interop


【解决方案1】:

原来,Add() 想要一个完整的路径:

wordApp.Documents.Add(Path.GetFullPath("somedoc.docx"));

工作正常,docxdotx 文件。

【讨论】:

  • 我不久前也遇到过同样的问题,非常烦人!
【解决方案2】:

使用.Add() 添加新文件,使用.Open() 打开现有文件。

https://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.documents.aspx

【讨论】:

  • 我想根据现有文件创建一个新文件。 docx 在这里用作模板。基本上docxdotx 之间的唯一区别是Word 在打开它时的行为。对于互操作,这似乎没有什么区别。
  • 我已经有一段时间没有使用这些文件了,但是如果我没记错的话,从文件结构的角度来看,这些文件本身也没有什么不同。我怀疑无论哪种方式尝试在现有文档上使用 .Add() 方法都不会成功。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多