我想编写一个程序,它将读取一大堆word 97文件(.doc)并将它们保存为.docx文件。我被限制在.Net 2.0。
在这个阶段,我只想让它使用我的存根代码 - 然后我会编写GUI和逻辑来在多个位置打开多个文件等...
这是我到目前为止所拥有的:
using MSWord = Microsoft.Office.Interop.Word;
using MSPPoint = Microsoft.Office.Interop.PowerPoint;
然后
OpenFileDialog ofd = new OpenFileDialog()
{
CheckFileExists = true,
};
if (ofd.ShowDialog() != DialogResult.OK)
return;
MSWord.Application app = new MSWord.Application();
MSWord.Document doc = new MSWord.Document();
doc = app.Documents.Open(ofd.FileName);
try
{
doc.SaveAs2(ofd.FileName + ".docx", MSWord.WdSaveFormat.wdFormatDocument);
}
catch (Exception ex)
{
MessageBox.Show("Could not save because:\r\n" + ex.Message,
ex.GetType().ToString());
}
doc.Close();
app.Quit();
return;
据我所知,word文档正在打开。
但是,SaveAs2()
命令似乎抛出AccessViolationException
并且未保存.docx。
有人可以让我知道上面代码有什么问题,为什么不保存,以及如何解决?
由于
答案 0 :(得分:11)
你被困在DLL地狱中。仅在计算机上安装Office 2010时使用SaveAs2()。任何以前的版本确实会使用AccessViolation进行轰炸,该方法未实现。使用正确的PIA版本也可以避免这个问题,请务必使用您愿意支持的最低版本。
使用SaveAs()方法。