Excel到SQL Server数据库的数据导入导出技术研究
2022-01-09
来源:好走旅游网
维普资讯 http://www.cqvip.com 58 计算机与数字工程 第35卷 Excel到SQL Server数据库的数据导人导出技术研究 王晓刚杨春金 (武汉理工大学信息工程学院武汉430063) 摘要介绍Delphi中,采用新一代数据访问技术dbExpress和OLE技术来实现Excel数据表到SQL Server数据库的 dbExpress SQL server Excel OLE TP317.3 数据导入和导出,及其在高速公路车辆查询系统中的应用。 关键词中图分类号1 引言 运行OLE自动化程序需要在Uses语句中加入co— mobj来开始自动化程序。通过调用CreateOleOb— 办公自动化信息管理系统的用户常常会遇到 ject来检索一个自动化对象,CreateOleObject调用 需要把由Excel存储的数据资料导入到SQL Server 大量系统内部的OLE函数,创建一个Idispatch的 数据库,同时又要把SQL Server数据库中的数据导 实例,并从Variant中返回一个Delphi变量类型,可 出到Excel数据表的问题。不同的编程语言有不 以根据不同的环境提供不同的功能,这里我们使用 同的解决方法。本文介绍应用Delphi编程来实现 Variant来引用Excel内部的对象以建立Delphi与 Excel数据表到SQL Sevrer数据库的数据导入导出 Excel之间的连接。并采用dbExpress建立Delphi 技术。 和SQL Server之间的连接,来实现Excel数据表到 SQL Server数据库的数据导入和导出。 2 基本思路 OLE自动化是Windows应用程序操纵另一个 3 dbExpress访问SQL Server技术 dbExpress通过TSQLConnection组件同SQL 程序的一种机制。被操纵的一方称为自动化服务 器,操纵自动化服务器的一方称为自动化控制器。 Server数据库进行连接。双击TSQLConnection,就 通过引用这些对象实现对自动化服务器的调用,然 会弹出它的组件编辑器,在这个组件编辑器里,我 后通过设置对象的属性和使用对象的方法操纵自 动化服务器,实现两者之问的通讯。 们就可以定义连接数据库的类型,数据库名称,登 陆帐号、密码等信息。以下就是我们连接名为DB- SERVER的数据库服务器的具体情况: DfiverName=MSSQL//数据库类型 HostName=DBSERVER//数据库服务器 Database=ETEST//数据库名 UserName=sa//登陆帐号 _Delphi在数据库方面提供的强大又富有弹性 的能力给广大编程人员带来了方便。dbExpress是 Delphi下一代的数据访问技术。提供高效率数据 访问以及提供跨平台能力的数据访问引擎。dbEx- press包含了7个组件,它们是TsQLconnection、 TSQLDataSet、TSQLQuery、TSQLStoredProc、TSQLT- Password=sa//登陆密码 BlobSize=一1 able、TSQLMonitor和TSimpleDataSet,这些组件的功 能就是让应用程序连接后端数据库,访问数据表中 LocaleCode=19OOO MSSQL Translsolation=ReadCommited 0S Authentication=False 的数据,把修改的数据更新回数据库中以及让程序 员观察dbExpress向后端数据库下达命令等。 在连接上数据库以后,dbExpress提供了两种 mpleDataSet组件;二是使用 Delphi完全支持OLE应用程序自动化,提供的 方法:一是使用TSiaSet搭配TDataSetProvider和TClientData- Servers栏控件可以很容易开发OLE自动化控制器 TSQLDatt组件来对数据库进行访问。在实现简单数据访 实现对OLE自动化服务器的调用。在Delphi内部 Se收到本文时间:2006年6月8日 作者简介:王晓刚,男,硕士研究生,研究方向:网络设计及信息管理。杨春金,男,副教授,研究方向:信号与信息处理。 维普资讯 http://www.cqvip.com 第35卷(2007)第3期 计算机与数字工程 59 问操作中,这两种方法在功能上几乎是一模一样 作较复杂的Excel数据表,创建Excel对象的过程 的,但是在有高性能要求的应用中,就需要使用第 是在后台运行,避免用户在自动化运行期间干预 二种方法来实现对数据库的访问。本文只涉及简 单的数据访问功能,所以采用第一种方法来实现对 Excel,而出现误操作。 主要代码的实现: 在前面的Form中添加ExcelApplication、Excel- 打开连接 数据库的访问操作。定义待访问的数据表名为 4.1‘CSBY’,则具体的操作步骤如下: (1)在Form中放置TSQLConnection组件,按 Workbook和ExcelWorksheet三个控件。然后打开 照连接数据库的方法建立与SQL Server数据库的 Excel应用程序,创建一个工作薄,如果打开工作薄 连接,设置该组件的Connected属性为True以打开 失败,就断开与Excel的连接,然后关闭Excel应用 连接,LoginPrompt属性为False以避免每次连接数 据库时都出现登陆框,设置Name属性为SQLCon— nectionl o (2)在Form中放置TSimpleDataSet组件,设置 该组件的Connection属性为SQLConnectionl,Data— Set.CommandText为‘select from CSBY’,设置 Name属性为SimpleDataSetl。 (3)在Form中放置TDataSource组件,设置该 组件的DataSet属性为SimpleDataSetl,设置Name 属性为DataSource1 o (4)在Form中放置TDBGfid组件,设置该组件 的DataSource属性为DataSource1,设置Name属性 为DBG6dl,表CSBY中的数据将显示在TDBGnd 组件中。 4 Excel数据表到SQL Server数据库 的数据导入导出技术的应用: 在襄十高速公路车辆查询系统中,有很多由 Excel数据表存储的数据资料需要导入到SQL Server数据库中,例如《载货类汽车质量参数调整 更正表》就需要导入到SQL Server数据库中以便用 来查询。如果由人工录入,工作量太大。解决的方 法有两种,一是利用SQL Server企业管理器的导人 导出向导功能直接将Excel数据表中的数据导人 到SQL Sevrer数据库中,但是这样数据库将暴露在 普通用户面前,一旦用户误操作,就会造成很大的 损失。二是在襄十高速公路车辆查询系统中实现 数据导入的功能,这样可以避免数据库直接面向普 通用户。这里采用方法二来实现数据导入功能。 襄十高速公路车辆查询系统查询出来的结果 需要导出到Excel数据表中,以报表的形式向上提 交。这就需要在襄十高速公路车辆查询系统中实 现能够将SQL Server数据库中的数据导出到Excel 数据表中的功能。能够实现这个功能的方法很多, 本文采用预先设置好Excel模板,然后再将数据导 入到模板中的方法。这种方法灵活、方便,可以制 程序。 源程序如下: Var wkbk:Workbook;//用于表示打开的工作薄,与exc l应用连接 begin OpenDialog1.InitialDir:=extractFileDir(paramstr(o));//Excel 文件打开的初始路径 if not(OpenDilaog1.Execute)then raise exception.Create(‘没有选择EXCEL文件!’); try//调用Connect方法,连接Excel ExcelApplicati0n1.Connect; Except showmessage(‘Microsoft Excel启动失败!’); exit; end; ExcelApplicati0n1.Visible[0]:=false;//设置EXCEL不可见 Exc elApplicati0n1.Workbooks.Add(EParam,0);//打开选择的 Excel文件 //ExcelWorkbookl与ExcelApplicatlonl建立连接 ExcelWorkbook1. ConnectTo(ExcelApplicati0n1. ActiveWork— book); //ExcelWorksheetl与ExcelWorkbookl建立连接 ExceIWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1]as —worksheet); end; Server数据库 取出Excel数据表的每一行信息插入到已建 好的,名为“CSBY”的SQL Server数据表中。为了 保护数据的完整性,利用TSQLConnection的Start- Transaction方法激活一个独立的数据库事务,以确 保在SQL Server数据表更新出现错误的时候,能够 调用TSQLConnection的Rollback方法将SQL Server 数据表恢复到进行更新操作之前的状态。 源程序如下: var i:integer; aTD:TYransactionDesc;//定义一个描述事务内容的参数 Sheet,TempSht:variant; begin aTD.TransactionID:=1;//指定事务的ID aTD.1solati0nLevel::xilREADCOMMITYED;//指定事务的级别 4.2 Excel数据表的数据导入到SQL 维普资讯 http://www.cqvip.com 60 王晓刚等:Exce1到SQL Server数据库的数据导入导出技术研究 byname(‘csl’).AsString; 第35卷 TempSht:=ExcelApplication1.Sheets; TempSht.item[1].Activate; Sheet:=Tem0sht.item[1].UsedRange; For i:=1 to Sheet.Rows.Count do begin SimpleDataSet1.Next; end; 4.4 关闭Excel。调用TExcelApplicati0n组件的 DisConnect方法和quit方法,断开与Excel的 连接。 SimpleDataSet1.insert; SimpleDataSet1.FieldByName(‘csl’).Aslnteger:=ExcelWork. sheet1.Cells.Item[i,1]; 源程序如下: SimpleDataSet1.edit; try ExcelApplication1.Disconnect;//调用DisConnect方法,断开与 Excel的连接 try SQLConnection1.StartTransaction(aTD);//开始这个事务 SimpleDataSet1.ApplyUpdates(0); SQLConnection1.Commit(aTD); except ExcelApplication1.quit;//调用quit方法关闭Excel except showmessage(‘关闭Microsoft Excel失败!’); end; SQLConnection1.Rollback(aTD);//若发生错误,将数据回滚 end; end; end; 5 结束语: 实现SQL Server数据库到Excel数据表的数据 4.3 SQL Server数据库中的数据导出到Excel数 导人导出功能。数据导人导出功能简化了数据录 据表中 入的工作,降低了建立数据库的工作量,同时也很 向预设的Excel模板中写入数据,就是利用 ExcelWorksheet的Cells属性添加数值的过程。 源程序如下: Var 好的实现了报表输出功能。 参考文献 [1]李维著,Delphi7高效数据库程序设计[M].机械工业 出版社,2003 i,n:integer; egbin SimpleDataSet1.Active=True;//打开数据集 f0r i:=1 to n do [2]Marco Cantu,罗征译,Delphi7从入门到精通[M].电 子工业出版社,2003 egbin [3]Jeffrey Richter,王建华译,Windows核心编程[M].机 械工业出版社,2000 ExcelWorksheet1.Cells.Item[i,1]:=SimpleDataSet1.field- 矫 .矫 ’ 币 不 乖 . : 乖 不 . 2: !绵 (上接第21页) 数字签名。 网上报税数字签名: 数),并通过设立大特征素数,很大程度地缩小了寻 找大安全素数范围。缩短了寻找大素数的时间,减 少了寻找大安全素数P和q的繁杂度,优化了寻找 纳税人先与税务机关签订网上申报协议,同时 大安全素数P和q的方法。上述方法已经采用C 获取税务局公钥和客户端软件。网上申报时,通过 语言编制程序完全实现,可在很短的时间内产生安 税务机关网上报税服务器进入网上报税模块。网 全素数。并通过引入RSA公钥密码体制对中国税 0版改进,在【申报征收】子系 上报税模块调用【申报征收】子系统中相关模块进 收征管信息系统V2.采用此 入网上申报,申报完毕确认后产生回执,并调用【网 统中增加【网上报税数字签名】功能模块,上报税数字签名】模块利用RSA加密软件对网上 快速寻找大安全素数方法来产生RSA所需要的素 报税回执内容加密处理形成数字签名,附在申报回 数,实现电子网上报税数字签名,使网上报税数字 执的后面。纳税人可以使用税务局提供的签名验 签名与税收征管信息系统一体化。既降低了税收 成本,又方便了纳税人,减轻了纳税人负担,有利于 电子网上申报的拓展。 参考文献 证工具输入税务局公钥进行解密验证。 6 结束语 [1]卢开澄.计算机密码学[MJ.第2版,清华大学出版社,1998 运用素数的陈氏表示法“1+2”,即一个素数可 [2]Bruce Schneier著.吴世忠等译.应用密码学[M].机械 表示一个偶数和另一素数之和P=a(a+1)+b(素 工、l 出版社,2000