利用ASP动态生成excel文档.pdf
保险职业学院学报2 0 0 5年第2 期 总第9 9 期 利用 A S P动态生成 E X C E L文档 李玉菲 刘 伟 常 伟 易 竞 摘要 E x c e l 是 Mi c r o s o f t 公司的O f f i c e 套件中的一种软件, 主要用来处理电子表格。它以界面友好、 处理数据迅速等优点获得用户的好评, 因此E x c e l 文档的使用非常广泛。本文将向大家介绍在网络编程过 程 中, 利用 A s p A c t i v e S e r v e r P a g e s N,I 实现动态生成 E x c e l 文档的方法。 关键词 E x c e l 文档 A s p ; 网络编程 一 、引言 在网络编程过程中, 为了操作的方便, 很多情况下都需要将数据库中的数据转化为 E x c e l 格式。利 用 A s p 编程实现这一操作, 主要涉及四种方法 ①使用 Mi c r o s o f t 的 O f f i c e we b 组件; ②直接在 I E中打 开, 再存为 E X C E L文件; ③用 E x c e l 的A p p l ic a t io n组件在客户端导出到 E x c e l ; ④用 f S o 方法生成 C S V文 件。本文着重介绍其中前两种方法的实现过程。 二、 程序设计实现 1 . 使用 O WC O WC是 O f f ic e we b c o m p o n e n t 的缩写, O f f i c e we b C o mpon e n t 是一组 C OM C o m pon e n t O b j e c t Mo d e l 组件对象模型 控件的集合, 用于为多种控件容器提供交互式的电子数据表模型、 数据库报表与 数据可视化服务。 O WC库中包含四个主要组件 S p r e a d s h e e t 电子数据表 组件 、 C h a r t 图表 组件、 P iv o t T a b le 数据透 视表 组件、 D a t a S o u r c e 数据源 组件。 程序主要实现如下 1 利用 V b S c r ip t 定义类 我们的类中包括三个私有属性 o b j S p r ead s h e e t 、 iC o l O f f s e t 和 i R o w Off s e t 。在初始化事件中, 定义o b iS p r ead s h e e t 为 S p r ead s h e e t 组件的一个对象, i C o lO f f s e t 和 i R o w Off s e t 分别指代列数和行数 , 分别赋初值 2。 Cl a s S Ex c e l Ge n P r i v a t e o b j S p r ead s h e e t P r i v a t e i C o l Of f s e t Pr i v a t e i R o wOf f s e t S u b C l a s s I n i t i a l i z e S e t o b j S p r ead s h e e t Ser v e r . C r e a t e O b j e c t “ O WC. S p r ead s h e e t ” i Ro wOf f s e t 2 i C o l Of f s e t 2 En d S u b S u b C l a s s Te r mi n a t e Set o b j S p r ead s h e e t N o t h i n g 清空 En d S u b En d Cl a s s 2 为 E x c e l G e n 类创建方法 类中需要包含两个方法 一个是将数据库中的内容插入到 s p r ead s h e e t 对象中 G e n e r a t e Wo r k s h e e t , 另外一个就是通过We b 服务器将 s p r ead s h e e t 对象的内容保存为 E x c e l 文件 S a v e Wo r k s h e e t 。 Cl a s s Ex c e l Ge n S u b Ge n e r a t e Ⅵ r k s h e e t o b j R S I f o b j RS . E OF t h e n E x i t S u b D i m o b j F i e l d , i C o l , i R o w i C o l i C o l Of f s e t i Ro wi Ro wOf f s e t 显示相应的字段名 F o r E a c h o b j F i e l d i n o b j R S . F i e l d s 4 9 维普资讯 o b j S p r e a d s h e e t . C e l l s i R o w, i co 1 . Va l u e o b j F i e l d . Na me i C o l i C o l 1 Ne x t 显示所有数据 D o Wh i l e No t o b j R S . E OF i R o wi Ro w 1 i Co l i Co l Or f s e t F o r E a c h o b i F i e l d i n o b j R S . F i e l d s I f t h e c o l u mn c o n t a i n s a n u l l v a l u e . i n s e r t b l a n k s t r i n g I f I s N u ll f o b j F i e l d . V a l u e t h e n , o b j S p r e a d s h e e t . C e ll s i R o w, iCo1 . V a l u e “ ” El s e o b j S p r e a d s h e e t . Cel l s i R o w, Co1 . V a lu e o b j F i e l d . V a lu e En d I f i Co l i Co l 1 Ne x t o b j R S . Mo v e Ne x t L o o p En d S u b F u n c t i o n S a v e Wo r k s h e e t s t r F i l e Nam e 将工作表保存为相应的文件名 On Er r o r Re s u me Ne x t C a n o b j S p r e a d s h e e t . A c t i v e S h e e t . E x p o r t s t r F i l e N am e , 0 S a y e Wo r k s h e e t Er r . Nu mb e r 0 En d Cl a s s 类定义结束后, 我们将类的定义保存为特定的文件譬如 E x c e l G e n . a s p , 在调用的类的页面中只需加 入“ ” 就可以正常使用。 2 . 直接在 I E中打开, 再存为 E X C E L文件 该方法允许服务器动态的生成 E x c e l 报表而无需额外的占用服务器空间, 并且可以实现多用户同时 进行访问, 生成报表时可以灵活地使用 E x c e l 已有函数。该方法适用于 E x c e l 9 7以及 E x c e l 2 0 0 0以上版 本。 1 为了能够动态的产生 E x c e l 报表, 我们首先需要创建一个 A S P文件, 并且在文件头部声明如下 用来通知浏览器生成文件的格式为 E x c e l 报表, 如果用户使用的是 N e t s c a p e 或者 I E浏览器, 浏览器 将提示用户保存或者打开文件, 客户端将直接调用 E x c e l 程序在浏览器中打开该文件。为了能够使 E x c e l 正确识别文件中的内容格式, 我们必须在文件中使用相应的 H T ML表格标签。 2 例如 商品名称 总数 售出 单价 光明牛奶 6 0 0 1 2 6 4 . 8 伊利牛奶 3 5 0 2 0 0 5 . 6 蒙牛牛奶 4 0 0 1 6 0 4 . 6 三鹿牛奶 5 0 0 8 0 4 . 9 3 下面我们将把以上数据动态的显示在 E x c e l 中, 并对有关数据进行计算, 在文档中添加如下处理 代码 库存 计算 共赚 计算 b 一c c * d 总计 S UM B 2 B 5 S UM C 2 n / a S UM E 2 S UM F 2 F 5 4 运行结果如下 图 1 序运行结果 三、 结论 以 上程序 在Wi n d o w s 2 0 0 0 I I S 6 . 0 下运 行正常。 其中 在利 用第2 种 方法的实 现过 程中, 除了 有的表格信息外, 同样包含了一些简单的E x c e l 函数, 利用动态生成的E x c e l 文档, 我们就可以方便的生 成相应的图表, 或者同其它数据库对接。 作者单位 保险职业学院 责任编辑 王碧华 维普资讯