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

歡迎訪問 生活随笔!

生活随笔

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

C#

不忘初心,能偷懒就偷懒:C#操作Word文件

發(fā)布時間:2024/1/8 C# 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 不忘初心,能偷懒就偷懒:C#操作Word文件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

換了一家公司,新單位的信息化建設仍然在路上。OA也正在建設中,目前項目發(fā)票報銷等流程仍然是手工的,只能線下填單子。至于是電腦上填好打印出來還是直接空白模板打出來手寫倒是不管,隨意。疫情期間積壓了太多項目,所以復工后填單子很快就讓我暴躁了。尤其是大小寫金額,還有三分位的那種小寫金額的格式,浪費了太多時間,幾乎就沒有一次成功過的,簡直不能忍。。。所以最后默默的打開了devenv。干嘛不寫個程序呢,多少能省點力氣。

?不過從頭按這個模板的格式一行行代碼生成Word文件看樣子工作量有點大,本著能偷懶就偷懶的宗旨,想到了一個辦法:空白處用先占位符代替,到程序里做替換。具體說來,就是用一些特殊的字符串先把位置占好,連帶著格式也調好,到程序里用真實有意義的內容去替換這些特殊字符串,就像下圖:

?所以需求就轉換成了如何用C#實現(xiàn)Word的字符串替換。顯然有這個需求的人應該也不少,網上很快就找到了相關代碼,經測試靠譜。操作Word文檔替換文字的核心代碼為(需要在項目中引入word的com):

private void FindAndReplace(Microsoft.Office.Interop.Word.Application WordApp, object findText, object replaceWithText){object matchCase = true; // 重點關注!!object matchWholeWord = false; // 重點關注!!object matchWildCards = false;object matchSoundsLike = false;object nmatchAllWordForms = false;object forward = true;object format = false;object matchKashida = false;object matchDiacritics = false;object matchAlefHamza = false;object matchControl = false;object read_only = false;object visible = true;object replace = 2;object wrap = Microsoft.Office.Interop.Word.WdFindWrap.wdFindContinue;object replaceAll = Microsoft.Office.Interop.Word.WdReplace.wdReplaceAll;WordApp.Selection.Find.Execute(ref findText, ref matchCase, ref matchWholeWord, ref matchWildCards, ref matchSoundsLike,ref nmatchAllWordForms, ref forward,ref wrap, ref format, ref replaceWithText,ref replaceAll, ref matchKashida,ref matchDiacritics, ref matchAlefHamza,ref matchControl);}

?調用的核心代碼為:

// 打開文檔MSWord.Application wordApp = new MSWord.Application(); MSWord.Document wordDoc = wordApp.Documents.Open(帶占位符的模板文件名);wordApp.Visible = false;wordDoc.Activate();FindAndReplace(wordApp, "##YY", txtYear.Text.Trim());FindAndReplace(wordApp, "#M", txtMonth.Text.Trim());FindAndReplace(wordApp, "#D", txtDay.Text.Trim());FindAndReplace(wordApp, "@@SY", txtSY.Text.Trim());FindAndReplace(wordApp, "@@XX", txtJE.Text.Trim());FindAndReplace(wordApp, "@@DX", txtCHN.Text.Trim());FindAndReplace(wordApp, "@@GS", txtCorp.Text.Trim());FindAndReplace(wordApp, "@@ZS", txtDJ.Text.Trim());wordDoc.Save();wordDoc.Close();wordApp.Quit();

大小寫轉換的代碼略了,反正網上到處都是。小寫金額加三分位也很簡單,ToString("#,##0.00")即可。軟件界面也略了,總之就是一堆Text控件用以輸入與占位符對應的內容。

運行后打開程序修改過的Word效果如下:

?這下可以稍微平復一下暴躁的心情了,不過還是希望OA能早點建好。

總結

以上是生活随笔為你收集整理的不忘初心,能偷懒就偷懒:C#操作Word文件的全部內容,希望文章能夠幫你解決所遇到的問題。

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