EXT系统中Ecel数据导入的设计和实现_第1页
EXT系统中Ecel数据导入的设计和实现_第2页
EXT系统中Ecel数据导入的设计和实现_第3页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要:以实际项目开发中遇到的导入问题为背景,概述了将大量Excel数据导入基于ExtJS技术的系统中的方法,并基于此分析了数据导入时实际中的各种需求问题,提出了几点改进和实现方法,对于类似的B/S模式下的导入问题有一定的改进和提高。关键词:ExtJS;Excel;导入0引言ExtJS通常简称为EXT,它是一种跨浏览器的Ajax框架,用JavaScript编写,与后台技术无关,用来开发具有各种丰富多彩界面外观的富客户端应用程序。ExtJS的最大优点就是利用其构建的Web应用具有与桌面程序近乎一样的标准用户界面与操作方式,并且能够兼容不同的浏览器平台。随着计算机网络的飞速发展,B/S模式的信息管理

2、系统应用范围越来越广泛,而在通常的信息管理系统中,外部数据与系统之间的数据交互,外部数据的导入是经常需要实现的一个功能,最常见的是Excel表中数据的导入。如何实现Excel数据导入到数据库中,是一个需要持续探讨研究的问题。当要批量导入数据时,一般的B/S系统只能通过不断地重复“逐条数据输入、处理、提交”的过程来完成。本文以职级体系管理系统实际项目开发为背景,研究了简单高效的数据导入和处理方法,为基于B/S的信息管理系统开发中Excel数据的导入问题提供了一种解决路径。1EXT系统中Excel数据导入的方法1.1传统的导入方法传统的导入Excel数据的方法是用JavaScript操作Excel

3、,依次取出Excel中每条数据,然后将这些数据值提交到后台Servlet再由后台JavaBean将数据处理后,添加到数据库中。部分关键代码:varoa=newActiveXObject("Excel.Application");/打开Excel应用程序varoaBook=oa.workbooks.open(fileName);/打开所指定文件名的Excel文件varoasheet=oaBook.Worksheets(1);获/取指定的工作表for(i=1;i<=lines;i+)/lines为需要导入的行数varname=oasheet.Cells(i,1).valu

4、e;/依次获取当前行的每个单元格的内容varnumber=oasheet.Cells(i,2).value;varage=oasheet.Cells(i,3).value;55这种方式一般效率较低,实际需求中一旦需要批量导入大量的数据时更是缓慢。特别是网络传输缓慢甚至导入过程中断网时那会更加麻烦,数据的丢失不可避免。所以本文提出了基于ExtJS的Excel数据导入的方法以及改进提高之处。1.2基于ExtJS的导入方法为了避免网络传输速度的影响同时提高导入效率,本文提出了如下改进方法:先把需要导入数据的Excel文件上传至服务器,然后在服务器上通过直接调用TransactSQL语句中OPENRO

5、WSET函数,打开服务器中上传的Excel文件,实现Excel数据的导入。首先需要实现的就是文件上传功能,使用基于ExtJS的控件,在该控件中,文件先被加入上传队列中然后再一起上传至服务器。使用其首先需要引入和文件,具体关键代码如下(采用MCV设计模式):vardialog=newExt.ux.UploadDialog.Dialog(url:'ImportServlet',/上传文件功能实现的Servletreset_on_hide:true,/是否重置上传队列minWidth:400,minHeight:200,width:400,height:350,/设置上传界面的大小a

6、llow_close_on_upload:true,/在上传过程中,是否允许关闭对话框upload_autostart:false/当文件添加进对话框后,是否自动开始上传);dialog.show('mydlg');在ImportServlet中,接受处理上传的请求,并提交给后台JavaBean处理数据,关键代码如下:tryList<Object>items=upload.parseRequest(request);lterator<Object>it=items.iterator();while(it.hasNext()Fileitemitem=(Fi

7、leItem)it.next();/Fileltem对象圭寸装单个表单字段元素的数据if(item.isFormField()else/是文件字段if(item.getName()!=null&&!item.getName().equals("")/上传文件的名称不为空Filefile=newFile("c:/load");/load文件夹导入的excel文件放入的位置FiletempFile=newFile(item.getName();file=newFile(file,tempFile.getName();/得到上传后的excel文

8、件在服务器中的完整的路径名item.write(file);将Fileitem对象中保持的主体内容保存到指定的文件中UploadlmportDatauid二newUploadimportData();/仓U建JavaBean对象Stringifsucuss=uidmport(file.getPath();调用JavaBean类的Import方法处理数据并导入到数据库中if(issucuss.equals("1")/接受后台JavaBean的处理结果返回"1"表示导入成功request.setAttribute("upload.message&q

9、uot;,"导入数据成功!");response.getWriter().write("success:true,message:'导入数据成功'");/上传成功后显示。elserequest.setAttribute("upload.message","导入数据出错!");response.getWriter().write("success:true,message:'导入数据出错'");55在JavaBean.UploadlmportData类中,定义了Im

10、port函数,用于打开Excel文件并导入到数据库中,关键代码如下:sql="TruncateTableimportEmpBasic"/清空临时表importEmpBasic中所有数据importEmpBasic为临时接受导入数据的表/通过SqlServer2005的TransactSQL语句中的OPENROWSET函数直接实现Excel数据的导入:sql="InsertintoimportEmpBasic(name,id,age,)selectname,id,agefromopenrowset('MicroSoft.Jet.OleDB.4.0',

11、'Excel5.0;HDR二yes;Database二"+filePath+"',sheet1$)"/excel中表的名称需要加上符号'$'此处的filePath的值为"c:/load/上传的文件名”db_conn.sm.executeUpdate(sql);sql="Select*fromImportVerticalProject"/再从临时表中依次取出每条数据,进行处理后导入真正的数据表中rs=db_conn.sm.executeQuery(sql);while(rs.next()55同时,真正导入

12、的过程中可以对每条数据进行验证和判断的处理,如此处的name字段的值不能为空、age字段的值必须为数值,一旦出错则停止本条数据的导入进入下一条,同时抛出出错的信息到另一个临时表importEmpBasicHistory中,以便在前台读取其查看到具体导入详细信息。关键代码如下:(接着上面的代码)while(rs.next()i+;/i-第几条数据if(rs.getString("name")=null|rs.getString("name").equals("")sqlHistory="insertintoimportEmpB

13、asicHistory"+"(importState,importMes,importTime)"+"values('"+"失败"+"','"+"第"+i+"条数据错误,姓名不能都为空,此条数据导入失败!"+"T"+datetime+"')"db_connHistory.sm.executeUpdate(sqlHistory);continue;退出本条数据的导入继续下一条else面给出导入过程以及导入结束的两个界面示意图2结束语整个系统采用基于Ajax的前端开发技术ExtJS和MVC模式的后台编程技术,采用B/S架构设计。用户选择需要导入的Excel文件,系统会先上传此Excel文件到服务器指定的目录中,然后在服务端自动地验证每一条数据快速正确地插入到指定的数据库表中,导入完成后每条数据的导入情况都能一览无余,实现了方便、快速、准确、高效率的Excel数据导入功能。文中提出的方法已在实际项目中成功应用,主要解决了大批量的数据的导入问题,效果显著。参考文献:1 宋一淇,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论