C# 处理Word自动生成报告 三、设计模板

既然是模板就少不了各种标记和配置. 这里主要用到了word的书签功能.

打开word按ctrl+shift+F5, 打开书签功能

如下图

如果所示, 可以选中word中的一个区域然后按ctrl+shift+F5, 对此部分添加一个书签

是否理解为这样是为这部分区域添加了指针? 根据图中的操作就可以明白了, 可以在对某些文字进行标识, 然后根据这个标识找到这部分进行操作.

第一篇文章小罗说了本次主要完成的内容, 下面说一下实现方式, 为了标识到各个书签的类型及一些关键配置,所以将书签的名字命名格式做了约定.

例如只是为了更新文字用的. 格式为 label_级别_名称

这里的loop是为了循环用, 这是报告中经常会 遇到的, 通过本例的目录就可以看出来

模板:

实际结果

这里的学期, 学生名字都是不固定的, 所以这里就定义了一下文档级别

文档最基本的为0级, 学期的循环为1级, 学期内姓名的循环为2级,依次类推.

因为存在循环,数据集也就会要求根据循环条件进行filter

所以loop的标签格式为 loop_级别_取Dataset中的第几张表(从1开始)_filter字段多个用XX隔开(此处不允许有下划线外其他特殊字符, 就用这个XX吧 )_loop名称

1. 更新指定位置的文字.  --  即如上图所示, 找到标签部分替换为数据源中的文字.

2. 支持表格.  -- 此部分原本想对表格添加书签,后来发现有个表格属性, 觉得写在这里更好一些

标题的格式同loop

说明项可选, 若需要合计行, 则需要标识, summary或缩写s: [合计]行是模板中表格的第几行   summaryfilter或缩写sf:数据集进一步filter到summary行的条件(因为一个表格只取一个Datatable,通过一个标识指定了哪些datarow是用来作为合计的)

3. 支持图表.

配置在图表标题,格式为:chart_级别_取Dataset中的第几张表(从1开始)_filter字段多个用XX隔开(此处不允许有下划线外其他特殊字符, 就用这个XX吧 )_chart名称_是否将Datatable的columnName作为第一行_从datatable第几列开始(列起始为1)_截止列

4. 支持区域内容循环生成. --  配置方式上文已说明, 程序会根据级别通过递归的方式处理.

5. 支持目录.   -- 无需标识, 模板中添加目录, 当内容处理完成之后, 动态更新目录即可.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一“技”之长

OS X 开发:打开文件面板NSOpenPanel应用

      在Mac桌面软件开发中,如果涉及到对文件的操作,无论是新建文件还是选择或读取文件,都离不开文件路径的定位,NSOpenPanel类提供了简洁的文件选...

14030
来自专栏圣杰的专栏

ABP入门系列(6)——定义导航菜单

完成了增删改查以及页面展示,这一节我们来为任务清单添加【导航菜单】。 在以往的项目中,大家可能会手动在layout页面中添加一个a标签来新增导航菜单,这也是一种...

246100
来自专栏Crossin的编程教室

【编程课堂】selenium 祖传爬虫利器

一些网页,比如微博,只有在登录状态才能进行页面的访问,或者对数据有比较复杂的验证和保护,直接通过网络请求进行登录并获取数据就会比较麻烦。这种时候,就该本篇的主角...

28340

用CasperJS构建你的网络爬虫

为应用程序收集数据有时候是一件困难和费力的事。一个急需的API可能会丢失,或者可能有太多的数据需要处理。有时候,只是有时候,你需要通过网络抓取信息。

18030
来自专栏mySoul

node函数 node路由

访问连接 http://127.0.0.1:1937/hello%20word.html

19540
来自专栏技术博文

ueditor富文本编辑器 修改框宽度和高度的方法

在使用ueditor的时候,用的textarea <textarea name="content" id="myEditor">这里写这条规则的回复内容</te...

38770
来自专栏Android自学

给WordPress文章添加类似说说的状态样式

20630
来自专栏互联网杂技

JavaScript定时器:setTimeout与setInterval 定时器与异步循环数组

深入了解一下 关于JavaScript定时器的知识; setTimeout与setInterval简述 setTimeout与setInterval使用方法基...

43860
来自专栏IMWeb前端团队

谈一谈CDN的JS,CSS文件加载出错主域名重试的问题

背景知识 【卡爷文章】CSS文件动态加载(续)—— 残酷的真相 浏览器 CSS/JS 加载能力测试表 css、js的相互阻塞 了解这些基础知识之后,我们再来谈谈...

26950
来自专栏BestSDK

Android Studio 开发必备的17个快捷键,效率提高一倍!

1. 书签(Bookmarks) 描述:这是一个很有用的功能,让你可以在某处做个标记(书签),方便后面再跳转到此处。 调用:Menu → Navigate → ...

427120

扫码关注云+社区

领取腾讯云代金券