最近在做人事档案管理系统遇到的一个问题就是种类多、数量大的报表打印问题。这个系统的一个特点就是信函打印,各种介绍信、各种证明信。对于这样的重复性的功能,最好的方法就是所有的报表实现格式套用。

经过分析发现报表中的信息可以分为两部分,一部分为信函主体内容即所有同种信函中统一的内容,另一部分为个人信息(姓名、性别等)即同种信函中经常要变化的内容,而这部分的内容来自网页(个人档案详细信息)。分析过后发现只要把报表的格式及主体内容规定好,只要从网页中把那些经常要变化的信息放进去就可以生成报表,这样同种类的报表就可一套用一种格式。

实现结构图

各部分功能

网页(前台)通过后台获得数据库中的档案信息。

xml文件中将报表的主体内容及格式定义好。xml作为传输和存储数据的有效工具对于实现存储报表的主体内容及内容格式的定义再适合不过了。xml文件作为一种配置文件来说,这样不仅保证报表格式与内容的统一性,还使得报表具有了可变化性,变化的范围涵盖了报表的内容及格式。

javascript将获得的网页信息与读取到的xml中信函内容与格式信息进行处理,并通过借助VBA的处理最后将信息进行整合最终得到格式内容统一的报表。

技术要点

javascript与网页交互(javascript与网页进行信息交互获得网页中的信息)。

javascript读取xml文件(javascript从xml文件获得信函的主体内容与格式)。

VBA操作(对word的内容和格式的操作)。

javascript结合VBA将整合报表内容,并对报表格式进行设置。

总结

初步有了想法,在技术上也实现了大部分。javascript与网页信息交互很简单,javascript读取xml文件也掌握了,将报表信息整合写入报表也实现了,就差通过VBA实现对报表的格式(排版、字体大小设置、页边距设置)控制。这样的结构下不管什么人的任何报表都可以得到:个人信息动态从网页中获取,报表内容及格式从配置文件(xml)中得到,而且如果需要的话只需要修改配置文件就可以动态修改报表的内容和格式。

JavaScript+XML+VBA导出报表初步构想的更多相关文章

  1. [原创].NET 业务框架开发实战之七 业务层初步构想

    原文:[原创].NET 业务框架开发实战之七 业务层初步构想 .NET 业务框架开发实战之七 业务层初步构想 前言:本篇主要讲述如何把DAL和BLL衔接起来. 本篇议题如下: 1.       DAL ...

  2. 如何利用FastReport.Net 设计并导出报表?

    在你的程序中,你可以使用FastReport.Net 报表设计器.要做到这一点,你需要使用报表对象设计方法: report1 = new Report();report1.Load("rep ...

  3. javascript 将 table 导出 Excel ,可跨行跨列

    <script language="JavaScript" type="text/javascript"> //jQuery HTML导出Excel ...

  4. JasperReport导出报表8

    我们已经看到在前面的章节中,如何打印和查看的JasperReport生成的文档.在这里,我们将看到如何在其他格式,如PDF,HTML和XLS转换或导出这些报告. Facade类net.sf.jaspe ...

  5. 转 创建 JavaScript XML 文档注释

    http://www.cnblogs.com/chenxizhang/archive/2009/07/12/1522058.html 如何:创建 JavaScript XML 文档注释 Visual ...

  6. 万圣节福利:红孩儿3D引擎开发课程《3ds max导出插件初步》

    ds max文件夹,插件文件夹以及3ds max的可执行程序文件夹: 位的,这里要改成x64,否则启动程序后3ds max会提示"不是有效的win32程序"之类的对话框. 然后要将 ...

  7. JavaScript & XML

    原文:JavaScript & XML 检测浏览器能力特性 //检测浏览器是否支持DOM2级XML var hasXmlDom = document.implementation.hasFea ...

  8. [SQLXML]FOR XML语法导出XML的易错之处

    原文:[SQLXML]FOR XML语法导出XML的易错之处 [SQLXML]FOR XML语法导出XML的易错之处 Version Date Creator Description 1.0.0.1 ...

  9. cms初步构想

    一.cms系统的初步构想 公司正准备使用yii框架重新弄个类cms的系统: 初步的功能: 栏目文章的管理 SEO的优化功能 推荐位管理 一些思路和规则: 数据库表名的定义:通过"大模块名称+ ...

随机推荐

  1. asp.net MVC过滤器的用法(转)

    转自:http://www.studyofnet.com/news/257.html APS.NET MVC中的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再 ...

  2. BZOJ 2173: 整数的lqp拆分( dp )

    靠着暴力+直觉搞出递推式 f(n) = ∑F(i)f(n-i) (1≤i≤n) (直接想大概也不会很复杂吧...). f(0)=0 感受一下这个递推式...因为和斐波那契有关..我们算一下f(n)+f ...

  3. 常用类库之.NET中的字符串

    字符串的特性 .不可变性 由于字符串是不可变的的,每次修改字符串,都是创建了一个单独字符串副本(拷贝了一个字符串副本).之所以发生改变只是因为指向了一块新的地址. .字符串池(只针对字符串常量) 当一 ...

  4. iframe 自适应高度、宽度

    示例: <iframe id="zyms" frameborder="0" scrolling="yes" style="w ...

  5. shell学习-读取输入

    功能:读取输入,打印:如果长度小于MINLEN,那么输出空格. #!/bin/bash # paragraph-space.sh # Insert a blank line between parag ...

  6. python10min系列之多线程下载器

    今天群里看到有人问关于python多线程写文件的问题,联想到这是reboot的架构师班的入学题,我想了一下,感觉坑和考察的点还挺多,可以当成一个面试题来问,简单说一下我的想法和思路吧,涉及的代码和注释 ...

  7. IO调度算法研究1

    linux kernel 2.6之后提供了四种IO调度算法,每种调度算法都有其不同的特点和应用场景,系统使用者可以通过系统提供的接口,选择使用哪种IO调度算法,以及调整IO调度算法的参数,以达到最优的 ...

  8. jQuery tmpl index

    <!-- 校验失败后显示 TODO--> <script id="checkError_table_tmpl" type="text/x-handleb ...

  9. 使用mongodb存取lbs数据

    1,在mongodb中创建lbs_db数据库,collection名称lbs_info,要使用lbs查询功能,需要对二维数据列建立索引 db.lbs_info.ensureIndex( { locs ...

  10. android点滴之PendingIntent的使用

    一概念 PendingIntent就是一个能够在满足一定条件下运行的Intent,它相比于Intent的优势在于自己携带有Context对象.这样他就不必依赖于某个activity才干够存在. 它和I ...