当前位置:首页 > 教学设计 > 报表数据怎么导入_一种基于ASP.NET的Excel报表导入与导出方法
 

报表数据怎么导入_一种基于ASP.NET的Excel报表导入与导出方法

发布时间:2019-07-06 03:53:31 影响了:

  摘要:提出了一种基于ASP.NET应用和ADO.NET技术的Excel报表的导入与导出方法,并将其应用于继续教育管理系统中。在Excel报表数据的导入过程中,引入事务的概念,采用数据库加锁机制,保证了数据的一致性要求。使用Excel模板简化了大量编程操作,对于各类报表软件系统开发者而言,简单方便。
  关键词:ASP.NET;Excel报表;ADO.NET;数据导入;数据导出
  中图分类号:TP301文献标识码:A文章编号:16727800(2012)008002902
  基金项目:陕西省自然科学基金项目(2010JM8032);陕西省教育厅基金项目(2010JK772)
  作者简介:李菲菲(1987-),男,西安石油大学计算机学院硕士研究生,研究方向为管理信息系统与计算机网络;刘天时(1960-),男,西安石油大学计算机学院教授,研究方向为管理信息系统、分布式数据库和计算机网络。1相关技术
  1.1COM组件概述
  在ASP.NET应用程序下创建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通过ADO.NET提供数据访问功能。ADO.NET是应用程序和数据库之间的桥梁,为.NET平台下与多种数据源直接交互提供了统一的编程模型。
  3Excel报表数据导入
  Excel报表数据导入数据库是一个复杂的过程,需要进行多方面验证,主要进行了以下几方面验证,过程如下:①获取上传的文件;②根据上传文件的路径,获取文件后缀名,判断文件是否为Excel格式,如果是,转③,否则转至⑥;③获取数据源;④判断表头信息是否正确,如果正确,转⑤,否则转至⑥;⑤判断表格内容的合法性,即逐行对表格中每个单元格进行验证,如长度、格式等;⑥验证结束。
  在应用程序中可以通过ADO.NET技术读取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,调用ADO.NET的Command.ExecuteNonQuery()函数,当返回值为0时,表示加锁成功,否则加锁失败。SqlList是SQL语句的集合,只要SqlList集合中有一条SQL语句执行失败,就执行事务回滚,不必执行其余的SQL序列,这样在某种程度上可以提高系统的效率,使用户提早发现错误,只有所有的SQL语句均执行成功才提交事务,从而实现了批量导入的完整性。
  4Excel报表数据导出
  4.1原始数据读取
  报表是各类原始数据的汇总与统计,因此报表制作的首要步骤是获取原始数据。一般而言,数据源存放在Access、SQL Server、Oracle等关系型数据库中。在ASP.NET应用程序中,通过调用ADO.NET提供的类库进行数据访问操作,实现应用程序与各类数据库之间的交互。ADO.NET通过4个组件来实现数据库的访问,分别是Connection对象、Command对象、DataAdapter对象、DataSet对象。ADO.NET获取数据过程见图2。
  图2ADO.NET获取数据过程
  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\]王兴,李菊,陈玮.ASP.NET中Excel文档生成技术研究\[J\]. 软件导刊,2010(4).
  (责任编辑:余晓)

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3