换了一家公司,新单位的信息化建设仍然在路上。OA也正在建设中,目前项目发票报销等流程仍然是手工的,只能线下填单子。至于是电脑上填好打印出来还是直接空白模板打出来手写倒是不管,随意。疫情期间积压了太多项目,所以复工后填单子很快就让我暴躁了。尤其是大小写金额,还有三分位的那种小写金额的格式,浪费了太多时间,几乎就没有一次成功过的,简直不能忍。。。所以最后默默的打开了devenv。干嘛不写个程序呢,多少能省点力气。

不过从头按这个模板的格式一行行代码生成Word文件看样子工作量有点大,本着能偷懒就偷懒的宗旨,想到了一个办法:空白处用先占位符代替,到程序里做替换。具体说来,就是用一些特殊的字符串先把位置占好,连带着格式也调好,到程序里用真实有意义的内容去替换这些特殊字符串,就像下图:

所以需求就转换成了如何用C#实现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文件相关推荐

  1. 十月工作总结:勿忘初心,继续前行

    好久没有更新博客了,偶然间翻开自己的博客列表,最近一篇还是在八月初时候写的.而且最近也没有硬文章或者是干货来放送.再不更新啊,估计博客就真的荒废了. 不经意间,十月份又过去了,现在来为十月份做一份总结 ...

  2. 不忘初心,砥砺前行——写在数据院成立四周年之际

    [编者按] 在一个寒冬的下午,我来到位于清华紫荆门附近的双清大厦,数据科学研究院就坐落在此.那是我加入数据院的第一天,印象尤为深刻.深刻的并非是某件事情,而是一个令我有些措手不及的小任务:在数据院成立 ...

  3. 不忘初心,努力做最好的自己

    又是一个平静的夏日夜晚,收拾好家务,贴上一贴面膜,准时的坐在电脑前,来到51CTO,其实这样的生活,已经成为了每天的必然,为了曾经的梦想,为了成为更好的自己,不负时光. 十年前的那个夏天,我毕业于一座 ...

  4. 【Python进阶】Python进阶专栏栏主自述:不忘初心,砥砺前行

    转眼间加入有三AI快半年了,今天给大家来个自我介绍,分享下这一路来的历程与未来的规划. 作者 | 汤兴旺 编辑 | 汤兴旺 不忘初心 不知道为啥,从小自己对IT有着莫名的兴趣,但由于自己的近视度数太高 ...

  5. 华南师大计算机学院团委,不忘初心 牢记使命|软件学院团委举行团建活动

    新学期,新起航,随着华南师范大学软件学院团委招新工作的顺利完成,软院团委注入了新鲜血液.为了让同学们尽快融入软件学院团委这个大家庭,华南师范大学软件学院团委于10月17号晚六点四十五分在软件学院学院楼 ...

  6. java程序员面试经历(不忘初心,永不放弃,放得始终)。

    其实一直想静下心好好写一点博客,记录下青春,但一直忙于学习,写bug.....转眼间2017只剩下最后几天,岁月无情划过,不留痕迹,唯有稀疏地中海.哈哈,本篇文章主要是想分享下刚毕业入门找工作的一点小 ...

  7. 杨攀:融云专注极致技术 不忘初心打造极简体验

    本文是融云联合创始人.CTO杨攀接受 LiveVideoStack 邮件采访整理而成,杨攀聊到了个人成长经历,作为创业公司技术负责人的责任,以及对企业通信市场的格局和未来的机遇与挑战. 文 / 杨攀 ...

  8. 信创产业发展应不忘初心牢记使命

    受国际大环境影响,信创市场国产化替代步伐已然加速.由于其中存在巨大的商机,信创市场中已然出现一些乱象.有的厂商拿洋技术标榜和宣传自主:有的厂商全国各地跑马圈地建产业园,进而向当地政府要政策要市场:有的 ...

  9. 计算机技师工作调研,技师学院党委书记王庆余到计算机工程系进行“不忘初心、牢记使命”主题教育调研工作...

    在学院"不忘初心.牢记使命"主题教育不断深入推进过程中,10月10日,技师学院党委书记王庆余到计算机工程系进行"不忘初心.牢记使命"主题教育调研.计算机工程系领 ...

最新文章

  1. 5笔涂出一只3D猫咪模型,可跑可跳无需手动绑定骨骼,新鬼畜素材get丨浙大开源...
  2. 信息学奥赛一本通(1137:加密的病历单)
  3. pcie总线连接两台电脑_基于PCIE总线多主互连系统的设计与实现
  4. redhat简单安装Samba,JDK环境,Tomcat,Oracle11G
  5. 软件集成策略故事连载----集成这破活儿
  6. jquery autocomplete s.toLowerCase(); 对象不支持此属性或方法
  7. Ubuntu13.04配置优化(二)转贴
  8. atitit 业务 触发器原理. 与事件原理 docx
  9. 转载:人生真相之为何你应该假装自己是一个电脑白痴(原文pconline)
  10. 解决Vivado仿真卡在executing simulate step
  11. vue中使用使用阿里云的iconfont
  12. Java在线打开word文档实现指定用户只能编辑指定区域
  13. element中file-upload组件的提示‘按delete键可删除’,怎么去掉
  14. linux开启IP转发
  15. 三大 Windows 文件搜索神器 Everything、Listary、AnyTXT Searcher 功能特色与区别详解
  16. 【Opencv】基于python-opencv的CV2实现图片OCR前的扫描摆正OCR识别【代码实现】
  17. 【数据库数据恢复】linux操作系统下MYSQL数据库恢复案例
  18. 自创文字小游戏《人类末日·丧尸危机》
  19. 计算机专业二本可以考cfa,计算机专业备考CFA一年经验分享
  20. 输送FPGA人才,英特尔人才战略升级

热门文章

  1. 2017282110258--高级软件工程--齐爽爽第一次作业
  2. 英文单词搜索之词霸搜索
  3. Ubuntu 16.04下通过系统软件商店安装flameshot后无法启动问题解决方法
  4. 《阿尔比恩的种子》pdf、mobi、epub
  5. 宝塔一键安装php,宝塔管理面板一键安装Tipask3.5版本教程
  6. 面向工业物联网的拍赫兹通信
  7. Markdown字体大小颜色、大小、背景色 (二)
  8. P1413 坚果保龄球
  9. 百家争鸣的低代码平台
  10. 《鹰猎长空》剖析对当下儿童电影的困境与反思