基于C#的对WORD文件修改的小系统

Withdrawn

发布日期: 2019-05-07 16:35:26 浏览量: 255
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

一、背景

亲戚在家乡的一家电影放映场工作,由于不太先进的设备,导致每一次打印机打出都号码都与座位号对应不上,所以就跟我聊,问能不能写一个方便一点的小系统。

二、抽象设计

2.1 选择编程语言

这个小代码的难点是如何操作(WORD文本)以及如何方便安装使用,至于性能,可能不需要考虑的太多。由于之前写了两个JAVA与PHP的WEB网站,就想用WEB网站的形式。但是由于需要稳定服务器就被迫放弃了,因为没有必要。简单调研了一下,决定用C#编写一个单机版的客户端小程序。一是因为简单,二是因为c#对word的操作应该更好支持。

2.2 是否选择数据库

如上面所言,使用数据库还要安装,使用线上资源没必要,而且就算使用本地数据,由于操作可能需要一定的技术功底,所以也暂时放弃。

2.3 程序设想

一个单机版的可以通过word模板去生成对应的电影票信息的word文本的软件。

并且要在每一步对应打上log,方便纠错与统计。

三、难点解析

c#直接使用net框架很方面的完成图形界面的编写以及按钮的颜色改变,按钮信息获取等,这些就不再阐述了,接下来我主要写一下关于如何使用c#操作word以及如何编写一个简单的日志类。

已售出自动修改为红色且不再可选,点击座位号,确认可以生成对应word。

3.1 操作word模板

c#操作word的两种方式:

3.1.1 使用 office.Core.dll 引用

直接添加引用,搜索office就可以,它使用的是你电脑office上的dll引用,不过感觉上使用起来比较复杂。推荐第二种。

3.1.2 使用 Aspose.WORD for net 进行操作

Aspose 官网下载 此处需要google CSDN下载(破解版)

操作WORD:使用上面两种方式操作一个word文件都是很麻烦的,因为word和txt不同,它有很多编码,字号缩进等设置,要找到编辑的地方很麻烦。在查了一些资料以后,发现微软word有一个很好的功能书签,它可以理解为一个key,对应的value即为所需要编辑的word的地址位置。查看详细

office 操作代码

  1. //赋值书签名
  2. oBookMark[0] = "movieName";
  3. oBookMark[1] = "pai";
  4. oBookMark[2] = "pai1";
  5. oBookMark[3] = "hao";
  6. oBookMark[4] = "hao1";
  7. doc = wordApp.Documents.Open("D://test//test.doc");
  8. //插入对应书签 对应值
  9. doc.Bookmarks.get_Item(ref oBookMark[0]).Range.Text = movieName;
  10. doc.Bookmarks.get_Item(ref oBookMark[1]).Range.Text = pai;
  11. doc.Bookmarks.get_Item(ref oBookMark[2]).Range.Text = pai;
  12. doc.Bookmarks.get_Item(ref oBookMark[3]).Range.Text = hao;
  13. doc.Bookmarks.get_Item(ref oBookMark[4]).Range.Text = hao;
  14. //另存为 savePath 路径
  15. doc.SaveAs2(savePath);
  16. TraceHelper.GetInstance().Info("已保存至" + savePath, "WordRW Function");
  17. doc.Close(ref unknow, ref unknow, ref unknow);
  18. wordApp.Documents.Save(ref unknow, ref unknow);
  19. wordApp.Quit(ref unknow, ref unknow, ref unknow);

Aspose 操作代码

  1. //初始化信息
  2. doc = new Aspose.Words.Document("test.doc");
  3. DocumentBuilder bulider = new DocumentBuilder(doc);
  4. //移动并写对应信息
  5. bulider.MoveToBookmark(oBookMark[0]);
  6. bulider.Write(movieName);
  7. bulider.MoveToBookmark(oBookMark[1]);
  8. bulider.Write(pai);
  9. bulider.MoveToBookmark(oBookMark[2]);
  10. bulider.Write(pai);
  11. bulider.MoveToBookmark(oBookMark[3]);
  12. bulider.Write(hao);
  13. bulider.MoveToBookmark(oBookMark[4]);
  14. bulider.Write(hao);
  15. //doc 另存
  16. doc.Save(savePath);
  17. TraceHelper.GetInstance().Info("已保存至" + savePath, "WordRW Function");

上述两种方式都可以做到我们想要的功能。

3.2 日志类

为了更好的调试代码,也为了保存一些有用的信息,所有日志是必不可少的。 已调研日志引用(EventLog Log4Net)但他们用起来都比较麻烦,因为他们都是为大型系统设计的,所以就用网上例子自己写了一个简单日志类(利用DEBUG)。

  1. TraceHelper.GetInstance().Info("程序开始...", "Main Function");

上传的附件 cloud_download 基于C#的对WORD文件修改的小系统.7z ( 3.87mb, 1次下载 )
error_outline 下载需要12点积分

发送私信

一帘红雨桃花谢,十里清阴柳影斜

13
文章数
35
评论数
最近文章
eject