基于C#的對(duì)DOC文件修改的小系統(tǒng)

起源

我哥在家鄉(xiāng)的一家電影放映場(chǎng)工作萧吠,由于不太先進(jìn)的設(shè)備,導(dǎo)致每一次打印機(jī)打出都號(hào)碼都與座位號(hào)對(duì)應(yīng)不上桐筏,所以就跟我聊纸型,問(wèn)能不能寫一個(gè)方便一點(diǎn)的小系統(tǒng)。

抽象設(shè)計(jì)

  • 選擇編程語(yǔ)言
    這個(gè)小代碼的難點(diǎn)是如何操作(WORD文本)以及如何方便安裝使用九昧,至于性能绊袋,可能不需要考慮的太多。由于之前寫了兩個(gè)JAVA與PHP的WEB網(wǎng)站铸鹰,就想用WEB網(wǎng)站的形式癌别。但是由于需要穩(wěn)定服務(wù)器就被迫放棄了,因?yàn)闆](méi)有必要蹋笼。
    簡(jiǎn)單調(diào)研了一下展姐,決定用C#編寫一個(gè)單機(jī)版的客戶端小程序。一是因?yàn)楹?jiǎn)單剖毯,二是因?yàn)閏#對(duì)word的操作應(yīng)該更好支持圾笨。
  • 是否選擇數(shù)據(jù)庫(kù)
    如上面所言,使用數(shù)據(jù)庫(kù)還要安裝逊谋,使用線上資源沒(méi)必要擂达,而且就算使用本地?cái)?shù)據(jù),由于操作可能需要一定的技術(shù)功底胶滋,所以也暫時(shí)放棄板鬓。
    -程序設(shè)想
    一個(gè)單機(jī)版的可以通過(guò)word模板去生成對(duì)應(yīng)的電影票信息的word文本的軟件。
    捕獲1.PNG
    并且要在每一步對(duì)應(yīng)打上log究恤,方便糾錯(cuò)與統(tǒng)計(jì)俭令。

難點(diǎn)解析

c#直接使用net框架很方面的完成圖形界面的編寫以及按鈕的顏色改變,按鈕信息獲取等部宿,這些就不再闡述了抄腔,接下來(lái)我主要寫一下關(guān)于如何使用c#操作word以及如何編寫一個(gè)簡(jiǎn)單的日志類。
界面.PNG

已售出自動(dòng)修改為紅色且不再可選,點(diǎn)擊座位號(hào)赫蛇,確認(rèn)可以生成對(duì)應(yīng)word.

  • 操作word模板
    c#操作word的兩種方式:
    1. 使用office.Core.dll 引用
    office.PNG
    直接添加引用绵患,搜索office就可以,它使用的是你電腦office上的dll引用棍掐,不過(guò)感覺(jué)上使用起來(lái)比較復(fù)雜藏雏。推薦第二種。
    2. 使用Aspose.WORD for net 進(jìn)行操作
    Aspose 官網(wǎng)下載 此處需要google CSDN下載(破解版)

    操作WORD:
    使用上面兩種方式操作一個(gè)word文件都是很麻煩的作煌,因?yàn)閣ord和txt不同掘殴,它有很多編碼,字號(hào)縮進(jìn)等設(shè)置粟誓,要找到編輯的地方很麻煩奏寨。在查了一些資料以后,發(fā)現(xiàn)微軟word有一個(gè)很好的功能書簽鹰服,它可以理解為一個(gè)key病瞳,對(duì)應(yīng)的value即為所需要編輯的word的地址位置。查看詳細(xì)
    書簽.PNG
    1. office 操作代碼
                //賦值書簽名
                oBookMark[0] = "movieName";
                oBookMark[1] = "pai";
                oBookMark[2] = "pai1";
                oBookMark[3] = "hao";
                oBookMark[4] = "hao1";
                doc = wordApp.Documents.Open("D://test//test.doc");
                //插入對(duì)應(yīng)書簽  對(duì)應(yīng)值
                doc.Bookmarks.get_Item(ref oBookMark[0]).Range.Text = movieName;
                doc.Bookmarks.get_Item(ref oBookMark[1]).Range.Text = pai;
                doc.Bookmarks.get_Item(ref oBookMark[2]).Range.Text = pai;
                doc.Bookmarks.get_Item(ref oBookMark[3]).Range.Text = hao;
                doc.Bookmarks.get_Item(ref oBookMark[4]).Range.Text = hao;
                //另存為   savePath  路徑
                doc.SaveAs2(savePath);
                TraceHelper.GetInstance().Info("已保存至" + savePath, "WordRW Function");

                doc.Close(ref unknow, ref unknow, ref unknow);
                wordApp.Documents.Save(ref unknow, ref unknow);
                wordApp.Quit(ref unknow, ref unknow, ref unknow);

2.Aspose 操作代碼

                //初始化信息
                doc = new Aspose.Words.Document("test.doc");
                DocumentBuilder bulider = new DocumentBuilder(doc);
                //移動(dòng)并寫對(duì)應(yīng)信息
                bulider.MoveToBookmark(oBookMark[0]);
                bulider.Write(movieName);
                bulider.MoveToBookmark(oBookMark[1]);
                bulider.Write(pai);
                bulider.MoveToBookmark(oBookMark[2]);
                bulider.Write(pai);
                bulider.MoveToBookmark(oBookMark[3]);
                bulider.Write(hao);
                bulider.MoveToBookmark(oBookMark[4]);
                bulider.Write(hao);
                //doc  另存
                doc.Save(savePath);
                TraceHelper.GetInstance().Info("已保存至" + savePath, "WordRW Function");

上述兩種方式都可以做到我們想要的功能悲酷。
text.PNG
  • 日志類
    為了更好的調(diào)試代碼套菜,也為了保存一些有用的信息,所有日志是必不可少的设易。 已調(diào)研日志引用(EventLog Log4Net)但他們用起來(lái)都比較麻煩逗柴,因?yàn)樗麄兌际菫榇笮拖到y(tǒng)設(shè)計(jì)的,所以就用網(wǎng)上例子自己寫了一個(gè)簡(jiǎn)單日志類(利用DEBUG)顿肺。
TraceHelper.GetInstance().Info("程序開(kāi)始...", "Main Function");
log.PNG

詳細(xì)使用請(qǐng)看代碼 github

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末戏溺,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子屠尊,更是在濱河造成了極大的恐慌旷祸,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件讼昆,死亡現(xiàn)場(chǎng)離奇詭異托享,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)浸赫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門闰围,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人掺炭,你說(shuō)我怎么就攤上這事∑敬鳎” “怎么了涧狮?”我有些...
    開(kāi)封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵仆百,是天一觀的道長(zhǎng)食磕。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么腺毫? 我笑而不...
    開(kāi)封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮孽鸡,結(jié)果婚禮上狡赐,老公的妹妹穿的比我還像新娘。我一直安慰自己愿汰,他們只是感情好困后,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著衬廷,像睡著了一般摇予。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吗跋,一...
    開(kāi)封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天侧戴,我揣著相機(jī)與錄音,去河邊找鬼跌宛。 笑死酗宋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的疆拘。 我是一名探鬼主播蜕猫,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼入问!你這毒婦竟也來(lái)了丹锹?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤芬失,失蹤者是張志新(化名)和其女友劉穎楣黍,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體棱烂,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡租漂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了颊糜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哩治。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖衬鱼,靈堂內(nèi)的尸體忽然破棺而出业筏,到底是詐尸還是另有隱情,我是刑警寧澤鸟赫,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布蒜胖,位于F島的核電站消别,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏台谢。R本人自食惡果不足惜寻狂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望朋沮。 院中可真熱鬧蛇券,春花似錦、人聲如沸樊拓。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)骑脱。三九已至菜枷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間叁丧,已是汗流浹背啤誊。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拥娄,地道東北人蚊锹。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像稚瘾,于是被迫代替她去往敵國(guó)和親牡昆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 一摊欠、溫故而知新 1. 內(nèi)存不夠怎么辦 內(nèi)存簡(jiǎn)單分配策略的問(wèn)題地址空間不隔離內(nèi)存使用效率低程序運(yùn)行的地址不確定 關(guān)于...
    SeanCST閱讀 7,802評(píng)論 0 27
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,071評(píng)論 25 707
  • 有沒(méi)有那么一個(gè)人丢烘,哪怕是正在洗澡,也會(huì)趕忙擦干手些椒,拿起手機(jī)回復(fù)他的消息… 有沒(méi)有那么一個(gè)人播瞳,不經(jīng)意的看到一些文字,...
    微小暖閱讀 126評(píng)論 0 0
  • 作者:滬江網(wǎng)校|2017年03月04日 10:50 高考如何規(guī)范答題免糕?所謂網(wǎng)上閱卷赢乓,準(zhǔn)確地說(shuō)就是計(jì)算機(jī)網(wǎng)上輔助評(píng)卷...
    滬江中小幼閱讀 423評(píng)論 0 0
  • 人好像在一個(gè)階段都會(huì)有一個(gè)低潮期或者說(shuō)某一段時(shí)間內(nèi)都會(huì)有一次發(fā)瘋期,而對(duì)于我來(lái)說(shuō)石窑,這段時(shí)間是我的自卑感發(fā)酵期牌芋,...
    貓小姐的犬閱讀 358評(píng)論 0 0