Visual Studio.Net 自2001年2月问世以来,受到越来越多人的喜爱,C#做为主力军,集VB、Delphi的简单和VC的简炼与强大于一体,更是让许多人爱不释手,纷纷倒 向它的怀抱。通常的软件都要用到数据库,数据库中必然要用到报表,在Visual Studio.Net中自带了一个水晶报表,虽然功能十分强大,但市面上相关资料非常缺乏,网上全面介绍其使用的文章也屈指可数。Excel是微软公司办 公自动化套件中的一个软件,主要是用来处理电子表格。Excel以其功能强大,界面友好等受到了许多用户的欢迎,几乎每一台机器都安装了它,因此,我们可 以将数据导入Excel进行排版。
由于Excel的格式是封闭的,无法直接创建一个Excel文件然后来排版,只有借助Com组件来完成,同样,介绍用C#操作Excel的文章也就 那么几篇,基本上都是告诉你如何新建一个Excel文件,然后,将数据写入某单元格,最多再零星告诉你如何合并单元格,真正使用起来根本无法用C#做出漂 亮报表。本文巧妙利用Excel的宏来自动排版,大大减少了工作量,而且可以随时修改模板而无须修改程序,非常实用。
本人使用的是Office 2000,操作系统为windows 2000 professinal,为使问题简单化,这里不介绍数据库的知识,我一个二维数组来代表一个数据库中的表,我们的目的是将该数组放到Excel中,并排版成需要的格式,数组如下:
车牌号 | 类 型 | 品 牌 | 型 号 | 颜 色 | 附加费证号 | 车架号 |
浙KA3676 | 危险品 | 货车 | 铁风SZG9220YY | 白 | 1110708900 | 022836 |
浙KA4109 | 危险品 | 货车 | 解放CA4110P1K2 | 白 | 223132 | 010898 |
浙KA0001A | 危险品 | 货车 | 南明LSY9190WS | 白 | 1110205458 | 0474636 |
浙KA0493 | 上普货 | 货车 | 解放LSY9190WS | 白 | 1110255971 | 0094327 |
浙KA1045 | 普货 | 货车 | 解放LSY9171WCD | 蓝 | 1110391226 | 0516003 |
浙KA1313 | 普货 | 货车 | 解放9190WCD | 蓝 | 1110315027 | 0538701 |
浙KA1322 | 普货 | 货车 | 解放LSY9190WS | 蓝 | 24323332 | 0538716 |
浙KA1575 | 普货 | 货车 | 解放LSY9181WCD | 蓝 | 1110314149 | 0113018 |
浙KA1925 | 普货 | 货车 | 解放LSY9220WCD | 蓝 | 1110390626 | 00268729 |
浙KA2258 | 普货 | 货车 | 解放LSY9220WSP | 蓝 | 1110481542 | 00320 |
为了在C#中使用Excel,我们要先做一点准备工作,通过查找(前提是你安装Visual Studio.Net和Excel 2000),在你的计算机中找到TlbImp和Excel9.olb,将他们复制到一个文件夹中,在DOS窗口中执行 TlbImp Excel9.olb,这时会产生以下三个文件:Excel.dll、Office.dll和VBIDE.dll。
我们来完成两项任务,一是按网上文章介绍的方法,增加将数据写入一个Excel文件,也就是做一个简单报表,二是用Excel创建一个文件,然后以此文件为模板生成高级报表。
打开Visual Studio.Net,新建一个C#的windows应用程序,取名为MyExcel。根据个人爱好,对窗口做一些美化工作,然后放两个按钮:btnNormal和btnAdvance,Caption分别为“普通报表”和“高级报表”。
打开Visual Studio.Net,新建一个C#的windows应用程序,取名为MyExcel。根据个人爱好,对窗口做一些美化工作,然后放两个按钮:btnNormal和btnAdvance,Caption分别为“普通报表”和“高级报表”。
点“打开”按钮,再点“确定”按钮。
切换到代码窗口中,在文件头添加下面两个引用:
- using System.IO;
using System.Reflection;
再添加一个二维数组来表示数据表:
private string [,] myData=
{
{"车牌号","类型","品 牌","型 号","颜 色","附加费证号","车架号"},
{"浙KA3676","危险品","货车","铁风SZG9220YY","白","1110708900","022836"},
{"浙KA4109","危险品","货车","解放CA4110P1K2","白","223132","010898"},
{"浙KA0001A","危险品","货车","南明LSY9190WS","白","1110205458","0474636"},
{"浙KA0493","上普货","货车","解放LSY9190WS","白","1110255971","0094327"},
{"浙KA1045","普货","货车","解放LSY9171WCD","蓝","1110391226","0516003"},
{"浙KA1313","普货","货车","解放9190WCD","蓝","1110315027","0538701"},
{"浙KA1322","普货","货车","解放LSY9190WS","蓝","24323332","0538716"},
{"浙KA1575","普货","货车","解放LSY9181WCD","蓝","1110314149","0113018"},
{"浙KA1925","普货","货车","解放LSY9220WCD","蓝","1110390626","00268729"},
{"浙KA2258","普货","货车&