C#使用Aspose.Words操作word文档(利用模板2)
生活随笔
收集整理的這篇文章主要介紹了
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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Quartz 之入门示例
- 下一篇: C# 设置Word文档中图片的大小