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

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

实现结构图

各部分功能

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

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. spring+hibernate基础

    把数据库的配置信息写在一个文件中 jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc\:mysql\://localhost\:3306/ ...

  2. C++运算符重载为成员函数

    #include<iostream> using namespace std; class Complex{ public: Complex(double r=0.0,double i=0 ...

  3. TabelView的多选模式

    @interface ViewController ()<UITableViewDelegate,UITableViewDataSource> @property(nonatomic,st ...

  4. Hibernate 总结一

    Session 当批量处理数据过大时,session这个集合会造成内存溢出,需要通过flush把session中的数据刷出到数据库中,让后再clear,清空缓存 一.集合映射. 类型 Java中声明 ...

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

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

  6. <转> Python的优雅技巧

    枚举 不要这么做: 全选复制放进笔记 i = 0 for item in iterable: print i, item i += 1 而是这样: 全选复制放进笔记 for i, item in en ...

  7. python安装集成包

    anaconda, 包含各种科学运算包以及astropy.装完它一劳永逸. https://www.continuum.io/downloads

  8. [LeetCode]题解(python):067-Add Binary

    题目来源: https://leetcode.com/problems/add-binary/ 题意分析: 这题是要将二进制相加,比如“11”,“1”,那么就返回“100”. 题目思路: 模拟加法的过 ...

  9. VC中判断指定窗口是否被其他窗口遮挡

    本来是想判断当前窗口是否在最前面,无奈办法用尽就是不行,于是想换个思路:判断指定窗口是否被其他窗口遮挡.然后掘网三尺,找到了这个: bool CTestTray2Dlg::IsCoveredByOth ...

  10. GTW likes math(简单数学)

    GTW likes math  Accepts: 472  Submissions: 2140  Time Limit: 2000/1000 MS (Java/Others)  Memory Limi ...