日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#使用Aspose.Words操作word文档(利用模板2)

發布時間:2023/12/18 C# 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#使用Aspose.Words操作word文档(利用模板2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近接到個需求,由于客服這邊要導出大量有一定規則的word文件,里面的內容希望系統自動填充,例如

這里我使用Aspose.Words.dll這個類庫,

1.首先,我們需要創建模板文件,畢竟有規則的東西才好開發。在各個位置處添加書簽,如下:

2.核心方法如下,由于我這邊需求最多填充四個參數:中文品名、英文描述、HAWB、件數,所以下面方法就定義這幾個變量。其中,有些模板若不需要個別參數,直接傳空值就行。

/// <summary>/// 非危保函(將指定路徑的模板Path_TempleteDoc輸出至Path_out路徑)/// </summary>/// <param name="Path_TempleteDoc">模板文件路徑,包含文件名</param>/// <param name="CNName">中文品名</param>/// <param name="ENName">英文描述</param>/// <param name="HAWB">HAWB</param>/// <param name="PCS">件數</param>/// <param name="Path_out">文件輸出路徑,包含文件名</param>private void HandleGuaranteeDoc(string Path_TempleteDoc,string CNName,string ENName,string HAWB,string PCS,string Path_out){string tempFile = Path.GetFullPath(Path_TempleteDoc).ToString(); //獲取模板路徑,這個根據個人模板路徑而定。Document doc = new Document(tempFile);DocumentBuilder builder = new DocumentBuilder(doc); //操作wordDictionary<string, string> dic = new Dictionary<string, string>(); //創建鍵值對 第一個string 為書簽名稱 第二個string為要填充的數據if (!string.IsNullOrEmpty(CNName)){dic.Add("CNName", CNName);}if (!string.IsNullOrEmpty(ENName)){dic.Add("ENName", ENName);}if (!string.IsNullOrEmpty(HAWB)){dic.Add("HAWB", HAWB);}if (!string.IsNullOrEmpty(PCS)){dic.Add("PCS", PCS);}foreach (var key in dic.Keys) //循環鍵值對{builder.MoveToBookmark(key); //將光標移入書簽的位置builder.Write(dic[key]); //填充值}doc.Save(Path_out); //保存word}

另附上文件的復制和整個文件夾的復制

文件復制(路徑都準確到文件名):

/// <summary>/// 大文件多次復制文件 true:復制成功 false:復制失敗/// </summary>/// <param name="soucrePath">原始文件路徑包含文件名</param>/// <param name="targetPath">復制目標文件路徑,包含文件名</param>/// <returns></returns>public bool CopyFile(string soucrePath, string targetPath){try{//讀取復制文件流using (FileStream fsRead = new FileStream(soucrePath, FileMode.Open, FileAccess.Read)){//寫入文件復制流using (FileStream fsWrite = new FileStream(targetPath, FileMode.OpenOrCreate, FileAccess.Write)){byte[] buffer = new byte[1024 * 1024 * 2]; //每次讀取2M//可能文件比較大,要循環讀取,每次讀取2Mwhile (true){//每次讀取的數據 n:是每次讀取到的實際數據大小int n = fsRead.Read(buffer, 0, buffer.Count());//如果n=0說明讀取的數據為空,已經讀取到最后了,跳出循環if (n == 0){break;}//寫入每次讀取的實際數據大小fsWrite.Write(buffer, 0, n);}}}return true;}catch (System.Exception ex){return false;}}

文件夾復制(路徑都指到文件夾路徑)

/// <summary>/// Copy文件夾至/// </summary>/// <param name="sourceDir">原路徑</param>/// <param name="toDir">目標路徑</param>public static void CopyDirectInfo(string sourceDir, string toDir){if (!Directory.Exists(sourceDir)){throw new ApplicationException("Source directory does not exist");}if (!Directory.Exists(toDir)){Directory.CreateDirectory(toDir);}DirectoryInfo directInfo = new DirectoryInfo(sourceDir);//copy filesFileInfo[] filesInfos = directInfo.GetFiles();foreach (FileInfo fileinfo in filesInfos){string fileName = fileinfo.Name;File.Copy(fileinfo.FullName, toDir + @"/" + fileName, true);}//copy directoryforeach (DirectoryInfo directoryPath in directInfo.GetDirectories()){string toDirPath = toDir + @"/" + directoryPath.Name;CopyDirectInfo(directoryPath.FullName, toDirPath);}}

?

總結

以上是生活随笔為你收集整理的C#使用Aspose.Words操作word文档(利用模板2)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。