一种基于ASP.NET的Excel报表导入与导出方法

时间:2022-10-09 04:17:29

一种基于ASP.NET的Excel报表导入与导出方法

摘要:提出了一种基于应用和技术的Excel报表的导入与导出方法,并将其应用于继续教育管理系统中。在Excel报表数据的导入过程中,引入事务的概念,采用数据库加锁机制,保证了数据的一致性要求。使用Excel模板简化了大量编程操作,对于各类报表软件系统开发者而言,简单方便。

关键词:;Excel报表;;数据导入;数据导出

中图分类号:TP301文献标识码:A文章编号:16727800(2012)008002902

基金项目:陕西省自然科学基金项目(2010JM8032);陕西省教育厅基金项目(2010JK772)

作者简介:李菲菲(1987-),男,西安石油大学计算机学院硕士研究生,研究方向为管理信息系统与计算机网络;刘天时(1960-),男,西安石油大学计算机学院教授,研究方向为管理信息系统、分布式数据库和计算机网络。1相关技术

1.1COM组件概述

在应用程序下创建Excel报表之前,需要在工程中添加一个COM组件。COM是组件对象模型,对外提供接口,每个接口代表某个对象的属性或方法,在应用程序中通过调用这些属性和方法来完成特定逻辑处理。

1.2COM组件添加

在使用COM组件之前,必须安装Office软件。添加COM组件引用的具体步骤如下:在解决方案资源管理器中添加引用,选中COM标签项,在列表中添加Microsoft Excel 11.0 Object Library(不同版本的Office COM组件会略有不同)。

2Excel报表系统实现原理

Excel报表全部是由Cell单元格组成,因此格式的修改变得比较简单。客户端只要安装Office软件,就可以实现报表系统的开发。

Excel数据导入与导出操作属于Excel与数据库之间的交互,在数据交互过程中,.NET Framework通过提供数据访问功能。是应用程序和数据库之间的桥梁,为.NET平台下与多种数据源直接交互提供了统一的编程模型。

3Excel报表数据导入

Excel报表数据导入数据库是一个复杂的过程,需要进行多方面验证,主要进行了以下几方面验证,过程如下:①获取上传的文件;②根据上传文件的路径,获取文件后缀名,判断文件是否为Excel格式,如果是,转③,否则转至⑥;③获取数据源;④判断表头信息是否正确,如果正确,转⑤,否则转至⑥;⑤判断表格内容的合法性,即逐行对表格中每个单元格进行验证,如长度、格式等;⑥验证结束。

在应用程序中可以通过技术读取Excel文件,并引入如下函数来获取数据源:

Public static DataTable getExcelDataSourse (string excelPath){}

其中excelPath为要导入的Excel文件的绝对路径,使用office2003版本,其数据连接字符串为:

String connectString= "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" +path+ ";Extended Properties=Excel 8.0;"

Excel数据导入有效性验证见图1。

如果验证结果正确,开始数据导入,否则给予用户相应的提示信息。Excel数据导入Oracle数据库过程如下:①打开数据库连接;②验证Excel文件信息是否存在,在此过程中,需要对Excel表中的数据记录进行逐行检测;如果存在转向⑤;否则转至③;③获取Excel表格的数据记录,并将Excel的每行记录转换成一条SQL语句,保存到List集合中;④利用Oracle数据库的加锁机制,实现数据的批量导入;⑤关闭数据库连接;⑥导入结束。

图1Excel数据导入有效性验证

在本文中,引入事务的概念,用于防止多个用户访问数据库带来的数据不一致性(丢失修改、不可重复读和读“脏”数据),同时利用数据库的加锁机制,防止多个用户同时访问数据库产生的死锁现象。在本文中,引入如下函数:

public int ExecuteBatchNonQuerySql(string TableNames, List<string> SqlList){}

其中,TableNames表示要加锁的数据库表名集合,当要加锁的表不止一张时,各表之间用英文逗号隔开。当函数的返回值为1时,表示数据导入成功,否则数据导入失败(加锁失败或数据添加失败)。通过以下语句完成数据库表的加锁:lock table TableNames in exclusive mode no wait,调用的Command.ExecuteNonQuery()函数,当返回值为0时,表示加锁成功,否则加锁失败。SqlList是SQL语句的集合,只要SqlList集合中有一条SQL语句执行失败,就执行事务回滚,不必执行其余的SQL序列,这样在某种程度上可以提高系统的效率,使用户提早发现错误,只有所有的SQL语句均执行成功才提交事务,从而实现了批量导入的完整性。

4Excel报表数据导出

4.1原始数据读取

报表是各类原始数据的汇总与统计,因此报表制作的首要步骤是获取原始数据。一般而言,数据源存放在Access、SQL Server、Oracle等关系型数据库中。在应用程序中,通过调用提供的类库进行数据访问操作,实现应用程序与各类数据库之间的交互。通过4个组件来实现数据库的访问,分别是Connection对象、Command对象、DataAdapter对象、DataSet对象。获取数据过程见图2。

图获取数据过程

4.2实现技术

使用Excel模板导出数据,主要涉及到Microsoft.Office.Interop.Excel命名空间下的3个成员对象:Application对象、WorkBooks对象、WorkSheet对象。其中,Application对象为应用程序本身,WorkBooks对象为Excel工作薄,WorkSheet对象为Excel工作表。Excel报表数据导出步骤如下:①根据要求,创建相应的Excel模板;②创建空白Excel应用程序,并通过Workbook对象的Add方法将Excel模板添加到应用程序中;③获取数据源(原始数据或处理过的数据),并根据数据源填充Excel模板;④保存并释放内存。

通过worksheet对象的get_Range方法实现数据填充,根据需要可以设置字体、单元格边框、单元格对齐方式等。对于固定格式的Excel模板,也可以直接设置模板,简化大量编程操作。

5结语

本文基于报表解决方案开发继续教育学院管理系统,实现了诸多Excel文件导入导出需要,并且该系统已经正式投入使用,具有良好的使用性。利用Excel文件完成数据导入,速度快,能够满足系统开发的要求;使用Excel模板导出数据,对于复杂报表格式导出,非常简单有效,可以简化大量编程操作。总而言之,使用Excel文件完成数据导入和导出具有良好的适用性,适合于各类报表系统的开发。

参考文献:

\[1\]洗进.基于Web的智能报表的设计与研究\[J\].计算机与现代化,2010(7).

\[2\]张龙强.一种.NET下报表打印方法与实现\[J\].电脑知识与技术,2010(19).

\[3\]文静,华张梅,田建强.基于Excel的企业通用动态报表生成工具的设计\[J\].计算机工程,2005(4).

\[4\]金珊,步丰林.基于Web环境的报表设计工具\[J\].计算机工程,2004(SI).

\[5\]王兴,李菊,陈玮中Excel文档生成技术研究\[J\]. 软件导刊,2010(4).

上一篇:基于物联网的现代企业物流信息系统的设计与应... 下一篇:汽车保险业务实训软件的设计与研究