用C#来操作Word最方像便的方法是引入Word的API类库:
using Microsoft.Office.Interop.Word;
引入后就可以对Word进行操作了:
//启动Word程序 Microsoft.Office.Interop.Word.Application myWordApp = new Microsoft.Office.Interop.Word.ApplicationClass(); object oMissing = System.Reflection.Missing.Value; object filePath = ""; //这里是Word文件的路径 //打开文件 Document myWordDoc = myWordApp.Documents.Open( ref filePath, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); //下面是取得打开文件的页数 int pages = myWordDoc.ComputeStatistics(WdStatistic.wdStatisticPages, ref Nothing); //关闭文件 myWordDoc.Close(ref oMissing, ref oMissing, ref oMissing); //退出Word程序 myWordApp.Quit(ref Nothing, ref Nothing, ref Nothing);
问题:
1.使用以上代码,再myWordDoc.Close行会提示警告,方法..和非方法存在二义性,将使用方法组,在网上查了资料后发现是因为两个接口存在同名属性和方法名,因此需要强制转换,最简单的写法如下:
((Microsoft.Office.Interop.Word._Document)myWordDoc).Close(ref oMissing, ref oMissing, ref oMissing);
2.在执行Colse时会遇到程序会自动弹出将当前word文件另存为的窗口,若另存为,则报错“异常来自 HRESULT:0x800A1423";若不另存为,点击取消,报错"异常来自 HRESULT:0x800A1423 此文件为只读。 (C:\...\B01381E11S-R01-02-ceshi1.docx)"
查找资料后终于发现原因所在,修改Colse()函数的第一个参数即可,代码如下:
object saveOption = Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges; ((Microsoft.Office.Interop.Word._Document)myWordDoc).Close(ref saveOption, ref oMissing, ref oMissing);
OK,大功告成