因項目需要,給word文檔的書簽賦值,框架沒有相關內容,於是自己上網加上查看文檔,成功搞定該功能。下面是我的實現過程:
首先需要引用nuget包: Microsoft.Office.Interop.Word,我下載的是12.0.0版本的,剛開始下載的15.0.0版本的無法使用,暫時不知道為什么,有空研究一下;然后就是代碼實現:
/// <summary> /// 版 本 /// Copyright (c) 2018-2018 /// 創建人:Yu /// 日 期:2018.04.17 /// word操作 /// </summary public class WordHelp { ApplicationClass wordApp = new ApplicationClass(); Document doc; /// <summary> /// 生成文件存放地址 /// </summary> public string newPath { get; set; } /// <summary> /// 生成的新文件文件夾路徑 /// </summary> public string newDicPath { get; set; } /// <summary> /// 無參構造方法 /// </summary> public WordHelp() { } /// <summary> /// 打開模板 /// </summary> /// <param name="fileName">文檔名</param> public WordHelp(string filePath) { try { var FileLocation = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase; var oldPath = FileLocation + filePath; RandomPW randomPW = new RandomPW(); var random = randomPW.GetRandomPW(10); newPath = FileLocation + "new\\" + random + "\\" + filePath; while (!File.Exists(newPath)) { random = randomPW.GetRandomPW(10); newPath = FileLocation + "new\\" + random + "\\" + filePath; Directory.CreateDirectory(FileLocation + "new\\" + random + "\\"); File.Copy(oldPath, newPath); } newDicPath = FileLocation + "new\\" + random + "\\"; object fileobj = newPath; object nullobj = System.Reflection.Missing.Value; //打開指定文件(不同版本的COM參數個數有差異,一般而言除第一個外都用nullobj就行了) doc = wordApp.Documents.Open(ref fileobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj); } catch (Exception e) { Close(); DelDic(newPath); } } /// <summary> ///獲取word的書簽集合 /// </summary> /// <returns></returns> public List<string> GetBookmarks() { List<string> bookmarks = new List<string> { }; foreach (Bookmark bk in doc.Bookmarks) { bookmarks.Add(bk.Name); } return bookmarks; } /// <summary> /// 給書簽賦值 /// </summary> /// <param name="key">書簽名</param> /// <param name="value">書簽值</param> public void SetBookmarks(object key, string value) => doc.Bookmarks.get_Item(ref key).Range.Text = value; /// <summary> /// 關閉io /// </summary> public void Close() => doc.Close(); /// <summary> /// 刪除生成的文件 /// </summary> /// <param name="filePath"></param> public void DelDic(string filePath)=> Directory.Delete(filePath, true); }
然后發現程序運行時還是報錯,
未加載加程序集Microsoft.Office.Interop.Word………………
查看了一下,原來是我沒有安裝office,我安裝的是2007版本,安裝之后可以使用。