大数据Excel通过POI导入数据库通用设计方案

大数据Excel通过POI导入数据库通用设计方案
大数据Excel通过POI导入数据库通用设计方案

目录

一、总体设计思路........................................................................................................ - 1 -

二、导入规则表设计.................................................................................................... - 1 -

1、数据导入表规则.................................................................................................... - 1 -

2、数据导入列规则.................................................................................................... - 2 -

三、导入规则类设计.................................................................................................... - 3 -

四、界面设计................................................................................................................ - 4 -

1、规则配置界面........................................................................................................ - 4 -

2、导入数据界面........................................................................................................ - 6 -

五、导入逻辑................................................................................................................ - 7 -

六、内部评审补充........................................................................................................ - 7 -

通用Excel导入设计方案

一、总体设计思路

考虑到Excel导入在项目中应用较多,随后其他项目中都会用到,为了减少重复工作,不必因为excel的样式、数据等变化而重新编码,重复劳动,因此必须抽取通用的东西出来,封装共同点,暴露个性点,使用时只需要关注相关业务,而不必关注excel的读取和存储。考虑到这个情况,可以使用规则配置来解决这个问题。配置规则的时候,需要配置excel要导入的表,字段等信息,导入的时候依据这个规则将数据导入到数据库中。这样一来,在进行excel导入时候只需要为某种数据配置一个规则,然后调用封装的导入类就可以完成整个excel导入的工作了。

实现源码参见https://www.360docs.net/doc/a811657277.html,/detail/whatismvc/3696185

二、导入规则表设计

1、数据导入表规则

(1)ID:数据表唯一标识,没有业务含义;

(2)Create_time:创建时间;

(3)Rule_name:规则名称;

(4)End_row:数据读取结束标识,blank_row标识遇到空行结束,数字N表示读取到第N行结束;

(5)Header_index:excel标题行索引,默认值为1,表示第一行是标题行;

(6)Data_index:数据开始行索引,默认值为2,表示第2行开始是正式数据;

(7)Table_name:表名称,表示这个规则是针对这个表的数据导入定义的;

(8)Delete_repeat:是否删除重复行,即是否导入重复数据,0则不删除,直接导入,1则先删除重复数据,然后再导入;是否重复根据规则表data_import_column_rule的Is_unique字段来判定,重复行是指数据库中存在与excel中相同的数据;

(9)Enable:有效标识;

2、数据导入列规则

(2)Table_rule_id:data_import_table_rule表的主键,表示这条列规则是属于哪个表的规则;

(3)Is_PK:是否是主键;

(4)Produce_method:数据生成策略,导入数据/自定义策略/默认值,三种策略供选择;

(5)Is_unique:是否唯一,用来判定重复数据;

(6)Column_name:列名称,对应表中的列名;

(7)Header_name:excel列标题,与数据表列是对应的;

(8)Required:是否必须导入,0不必须1必须;

(9)Data_type:数据类型,数字还是字符,number/string/date;

(10)Max_length:最大允许长度,不能大于,数据表中该列的长度;

(11)Produce_method_value:数据生成策略值,导入数据是为空,自定义策略是为策略方法名,或者是默认值;

(12)Comment:备注;

(13)Is_dictionary:最终导入数据是否来源于字典,0不1是;

(14)Dic_table_name:字典数据来源表的名称;

(15)Dic_type_column:字典类型列的字段名;

(16)Dic_type_value:该列所属的字典类型值;

(17)Dic_required_column:字典表最终获取值列的名称,例如:现在需要导入“编码器类型”,excel内容是“飞利浦”,“编码器类型”是一个字典,对应的字典表是“video_coding_type”,“飞利浦”是“video_coding_type_name”列的值,而数据表需要存入的是“video_coding_type_id”列的值,这时“video_coding_type_id”就是Dic_required_column,而“video_coding_type_name”就是Dic_reference_column,“video_coding_type”是Dic_table_name;

(18)Dic_reference_column:参见第17条说明。

(19)Enable:该规则是否有效;

三、导入规则类设计

class ImportResult {

private int success;//成功数目

private int failed;//失败数目

}

class Excel {

private DataImportTableRule tableRule;

public Excel(String path){…}

public ImportResult import(){…}

}

class DataImportTableRule {

private String id;

private Date createTime;

private String ruleName;

private String endRow;

private int headerIndex;

private int dataIndex;

private String tableName;

private boolean deleteRepeat;

private String exceptColumns;

private Set ColumnRules;

public void initColumnRules(){…}

public void addColumnRule(DataImportColumnRule columnRule){…} }

class DataImportColumnRule {

private String id;

private String tableRuleId;

private boolean isUnique;

private String columnName;

private String headerName;

private boolean required;

private String dataType;

private String maxLength;

private String defaultValue;

private String comment;

private boolean isDictionary;

private String dicTableName;

private String dicTypeColumn;

private String dicTypeValue;

private String dicRequiredColumn;

private String dicReferenceColumn;

}

四、界面设计

1、规则配置界面

2、导入数据界面

五、导入逻辑

关于Excel操作,设计将采用apache的poi组件,版本采用项目lib中已经包含的版本poi-2.5.1。具体导入逻辑如下:

1、将excel文件上传到web服务器,利用poi加载excel文件。

2、根据用户选择的导入规则,从数据库加载对应的DataImportTableRule对象;

3、根据标题行索引Header_index,数据开始行索引Data_index,结束行标识End_row,

判断该excel是否满足对应规则的导入条件,满足则继续,不满足则给出提示信息。

4、从数据开始行Data_index开始,逐行读取excel文件。

5、处理excel第一列,根据excel第一列的标题以及header_name属性,匹配到对应

的DataImportColumnRule对象,如果没有匹配的对象,则抛出异常(未找到与之

匹配的列规则),如果该列已经处理过,也抛出异常(excel标题存在重复列),否

则继续;

6、读取Excel当前列的内容text,如果text是空值,判断Required属性是否为true,

如果是false,则将defaultValue属性作为excel内容text直接执行第11条,如果是

true则继续;

7、判断Is_dictionary属性是否为true,如果为false,则跳过8、9逻辑,直接执行第

10条,如果为true,则继续;

8、判断Dic_table_name属性、Dic_type属性、Dic_required_column属性以及

Dic_reference_column属性,若其中有任意一个为null或空值,则抛出异常(属于

字典,却未指定字典表名称Dic_table_name以及相关属性Dic_type、

Dic_required_column、Dic_reference_column),否则继续;

9、查找字典表,查找语句为”select [Dic_required_column] from [Dic_table_name]

where [Dic_type_column]=[Dic_type_value] and [Dic_

Reference_column]=’[text]’”,若sql语句不能查询到数据,则抛出异常(找不到对

应的字典项),若查询到数据,则取第一条数据的[Dic_required_column]值,继续;

10、判断Is_unique属性是否为true,若为false,执行第11条,若为true,则查找表

[Table_name]中[Column_name]值为[text]的数据是否存在,若不存在则执行第11

条,否则继续判断Delete_repeat属性是否为true,若为true则删除数据库中该条

数据;

11、判断Data_type属性,并判断text与该类型是否匹配,若不匹配,则抛出异常(数

据类型不符合条件),如果匹配则继续;

12、判断text长度是否超过Max_length属性值,若超过,则抛出异常(单元格内容长

度太大),否则继续;

13、将text作为Column_name列的值,加到准备好的sql语句对应参数位置,等待执

行;

14、处理excel第二列,从第5条开始执行循环处理,直到Excel列结束;

15、执行或批量执行准备好的sql语句,返回执行结果;

16、处理excel第二行,并判断是否符合End_row的条件,如果是结束行,则整个导入

结束,否则从第4条开始执行循环处理,直到End_row结束。

六、内部评审补充

1、主键生成策略。考虑到系统中大多设备的主键都与业务有关联,某个设备的主键可

能是由网点、设备类别、设备型号等组合出来的,所以各种设备的主键生成规则可

能不同,因此设备导入的时候可以根据设备种类,调用不同的主键生成策略。因此制定导入规则的同时,还要关联相应的主键生成策略。

2、Excel文件的空白行、空白列问题。经过测试,poi组件不存在这个问题,例如30

行数据,第15行是空白行,poi依然识别为30行,列同样如此。

3、Excel标题行有名字重复的问题。名字重复视为同一个属性,直接忽略同时给出警告

信息。

4、中止,继续如何实现。采用java的线程实现,wait()实现暂停,notify()实现继续。

5、Enable字段引发问题。逻辑删除的数据enable字段是0,当excel中有主键与之重

复的数据时,有2中方法:(1)删除掉原来的数据,重新插入;(2)直接在原来的数据上更新。

6、读写文件内存。网上已经查找到poi行级操作的源码,封装一下,可以满足要求。

7、假删除数据的处理,同5;

8、及时删除垃圾文件,释放对象;

9、注意代码结构和实现;

10、重复逻辑的判断,出现重复数据的处理(根据不同数据,使用相应的判断逻辑,

主键判断还是联合主键判断。逻辑删除的重复数据:删掉再导入;有效地重复数据:忽略并给出信息);

此文档仅为设计方案,如要查看具体实现,请参见csdn我上传的源码

https://www.360docs.net/doc/a811657277.html,/detail/whatismvc/3696185

把EXCEL表的数据导入到SQL数据库

如何成功把EXCEL表的数据导入到SQL数据库,代码如何编写 唯一下载软件下载,软件,下载,共享,共享软件,免费,免费软件,汉化,汉化补丁,游戏,游戏下载,软件教程,软件新闻,软件资讯,操作系统,邮件. 如何成功把EXCEL表的数据导入到SQL数据库,代码如何编 写· https://www.360docs.net/doc/a811657277.html,/jasoncheung/archive/2005/01/07/243624.aspx /*=================== 导入/导出Excel的基本方法===================*/ 从Excel 文件中,导入数据到SQL数据库中,很简单, ... 如何成功把EXCEL表的数据导入到SQL数据库,代码如何编写. 摘要:如何成功把EXCEL表的数据导入到SQL数据库,代码如何编写――点击此处阅读全文. 发表于@ 2006年04月05日11:21:00 | 评论(loading...) Powered by: Copyright ? gjcxywwx. DTS 能从文本文件或OLE DB 数据源(例如,Microsoft Access 2000 数据库)将数据导入到SQL Server 中。或者,也可以从SQL Server 将数据导出到OLE DB ...用DTS是肯定可以的,而且可以自动生成VB代码。我也不知道如何用SQL语句实现,关注!!!Top ... 例如:导入和导出数据。DTS 能从文本文件或OLE DB 数据源(例如,Microsoft Access 2000 数据库)将数据导入到SQL Server 中。或者,也可以从SQL Server 将数据...用DTS是肯定可以的,而且可以自动生成VB代码。我也不知道如何用SQL语句实现,关注!... ... gjcxywwx 2006-06-19T10:26:00Z VB操作LotusNotes数据库Wed, 24 May 2006 04:07:00 +0800 ... gjcxywwx 2006-04-05T11:28:00Z 如何成功把EXCEL表的数据导入到SQL数据库,代码如何编写Wed, 05 Apr 2006 19:21:00 +0800 ... 如何成功把EXCEL表的数据导入到SQL数据库,代码如何编写. 导出表中的数据到Excel,包含字段名,文件为真正的Excel文件,如果文件不存在,将自动创建文件,如果表不存在,将自动创建表基于通用性考虑,仅支持导出标准数据类型--邹建2003.10--*/导出查询中的数据...

图解把EXCEL数据导入到SQL SERVER 2008

实验环境:WIN XP,MS Office Excel2007,Sql Server2008 准备数据:Excel文档:D:\test\重复出修率.xlsx 方法一: 第一步:打开SSMS: 【开始】→【所有程序】→【Microsoft Sql Server2008】→【Sql Server Management Studio】

第二步:连接数据库: 在’对象资源管理器’中点击【连接】→【数据库引擎】登陆服务器 (P.S:如果没有看到’对象资源管理器’,点击左上角的【视图】→【对象管理器】) 第三步:登陆成功后,右击你要导入数据的数据库名,我这里数据库名是’TEST’ 右击【TEST】→【任务】→【导入数据】

这时候会出现一个向导:点击【下一步】 在弹出的窗口中,【数据源】选择:Microsoft Excel; 【Excel文件路径】就选择你本地电脑存放Excel文档的路径,我这里是D:\test\重复出修率.xlsx 【Excel版本】选择Excel2007(可以根据你office的版本,选择其他如Excel2003等等。)选中【首行包含列名称】框,最后点击【下一步】 “首行包含列名称”是指Excel中的首行数据插入数据库后将作为新建表的列名.

在弹出窗口中,【目标】可以采取默认的,【服务器名称】也是一样可以选择身份验证,最后选择你要插入数据到哪个数据库中。 如我这里选的是’TEST’,选好后点击【下一步】

如果就把Excel数据插入一个新表,就选择【复制一个或多个表或视图的数据】 如果想把Excel数据插入到已存在的一张表中,则选择下面的【编写查询以指定要传输的数据】 我这里是选择上面一个,然后点击【下一步】 接着会弹出Excel表中的sheet表名字,如果你没有修改过sheet表名字,则可能显示的是’shee1$’,’shee2$’,’shee3$’等等. 然后你选中你想要导入的哪张表的数据,我这里导入的是【’aug$’】 选中后,右边的【目标】栏位中会出现内容, dbo是指数据库的架构名,aug$只是新建的表名,如果你想修改表明,双击就可以表明进入编辑状态就可以修改了。我这里修改的表名称为:aug_info

图解把Excel数据导入到SQL Server 2008

实验环境: WIN XP ,MS Office Excel 2007 ,Sql Server 2008 准备数据: Excel文档: D:\test\重复出修率.xlsx 方法一: 第一步: 打开SSMS: 【开始】→【所有程序】→【Microsoft Sql Server 2008】→【Sql Server Management Studio】

第二步: 连接数据库: 在’对象资源管理器’中点击【连接】→【数据库引擎】登陆服务器 (P.S:如果没有看到’对象资源管理器’,点击左上角的【视图】→【对象管理器】) 第三步: 登陆成功后,右击你要导入数据的数据库名,我这里数据库名是’TEST’ 右击【TEST】→【任务】→【导入数据】

这时候会出现一个向导:点击【下一步】 在弹出的窗口中,【数据源】选择:Microsoft Excel ; 【Excel文件路径】就选择你本地电脑存放Excel文档的路径,我这里是D:\test\重复出修率.xlsx 【Excel版本】选择Excel 2007 (可以根据你office的版本,选择其他如Excel 2003等等。)选中【首行包含列名称】框,最后点击【下一步】 “首行包含列名称”是指Excel中的首行数据插入数据库后将作为新建表的列名.

在弹出窗口中,【目标】可以采取默认的,【服务器名称】也是一样可以选择身份验证,最后选择你要插入数据到哪个数据库中。 如我这里选的是’TEST’,选好后点击【下一步】

如果就把Excel数据插入一个新表,就选择【复制一个或多个表或视图的数据】 如果想把Excel数据插入到已存在的一张表中,则选择下面的【编写查询以指定要传输的数据】 我这里是选择上面一个,然后点击【下一步】 接着会弹出Excel表中的sheet表名字,如果你没有修改过sheet表名字,则可能显示的是’shee1$’, ’shee2$’, ’shee3$’等等. 然后你选中你想要导入的哪张表的数据,我这里导入的是【’aug$’】 选中后,右边的【目标】栏位中会出现内容, dbo是指数据库的架构名,aug$只是新建的表名,如果你想修改表明,双击就可以表明进入编辑状态就可以修改了。我这里修改的表名称为:aug_info

如何将EXCEL数据导入到DATAGRID

如何将EXCEL数据导入到DA TAGRID 设计人:温源 1,Form窗体设计如下 2,源程序 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ds.Clear() OpenFileDialog1.Filter = "EXCEl文件 (*.xls;*.xlsx;*.csv)|*.xls;*.xlsx;*.csv|所有文件(*.*)|*.*" OpenFileDialog1.FilterIndex = 1 OpenFileDialog1.CheckFileExists = True OpenFileDialog1.CheckPathExists = True OpenFileDialog1.ShowDialog() Dim filename As String filename = OpenFileDialog1.FileName If filename = "" Then MsgBox("没有选择文件!无法进行数据导入") Exit Sub End If EcxelToDataGridView(filename, DataGrid1) End Sub Sub EcxelToDataGridView(ByVal filePath As String, ByVal dgv As DataGrid) Dim strConn, strExcel, sheetname As String ' strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & filePath & ";Extended Properties ='Excel 8.0;HDR=NO;IMEX=1'" strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & filePath &

将Access数据库导入到Excel表格

将Access数据库导入到Excel表格 Access数据库管理系统作为Microsoft Office系列软件成员之一,以其强大的数据库管理功能,成为许多中小型信息管理系统的首选开发工具,应用十分广泛。 对于一般用户来说,往往对Aceess的熟悉程度远远不如同样是Office成员的Excel, 因为Excel界面直观、操作简便(能通过菜单实现大部分功能),大量的函数可直接在单元格内使用,而使用Access要对数据库知识有一定的理解,操作相对复杂,函数也只能在VBA 语言中使用,因此一般用户在处理Access数据库文件时,往往不知道如何查找或统计出想要的结果。如果能将一个Access数据库中的数据转化为Excel表格,将会大大提高处理效率。Excel的VBA(Visual Basic for Application)语言即提供了这样的功能,它可以对Access 数据库(*.mdb文件)中的内容进行查询、提取、增加、删除等操作。 笔者用Excel的VBA设计了一个小工具(见附件),可以将Access数据库中的“表”和“查询”中的内容提取到Excel表格中。所谓“表”,就是Access数据库中保存的原始数据,具体为一个或多个二维数据表,“查询”为程序员根据“表”的内容生成的用户想要等到的结果,也是以二维表的形式存放。下面介绍一下使用方法: 一、打开“导入Access数量库.xls”工作簿,确认“启用宏”,点击“Sheet1”表中的“导入MDB文件按钮”,出现打开文件对话框,找到要导入的Access数据库文件并打开。 二、打开一个Access数据库文件后,出现一个小窗体,用于选择是导入“表”,还是导入“查询”。选择“表”/“查询”后,该数据库所有的“表”/“查询”的名称将出现在下方的选择列表中,选择要导入的“表”/“查询”的名称,输入要导入的记录条数,点击“确定”,该“表”/“查询”的内容将导入到一个新建的工作簿中。(见下图) 说明:EXCEL和外部数据库打交道是通过引用功能实现的:在该工作簿中通过菜单或按“Alt-F11”键打开“Visual Basic 编辑器”,在顶层菜单中选择“工具(T)”—“引用(R)”,出现下图的窗口:

把Excel中的数据导入Oracle 数据库中练习题.doc

教你怎么样把Excel 文件中的数据导入到Oracle 数据库中 第一种:最简单的方法。 在EXCEL中全选数据,然后COPY。接着打开PL/SQL DEVELOPER,打开SQL窗口,输入select * from mytable for update; 然后执行,就可以看到查出目的表mytable数据,如果是空表,当然是没数据了。然后点击下面列表上方的锁(编辑数据),不管有没有数据,我们选择最后一个空行的行头,让整行变成黑色则表示整行已全选中。注意该行左边是有个黑色实心三角箭头的。然后粘贴,再commit 就OK咯。 说明:而且这个方法还有个好处就是对EXCEL中的日期型、数值型字段的处理也很正常,数据类型不会丢失。 图:选中了行然后粘贴数据 第二种:简单的方法。 先将Excel文件另存为一个.csv 文件,然后编写一个insert.ctl文件,ctl文件写法如下:load data--1、控制文件标识 infile 'test.csv'--2、要输入的数据文件名为test.csv append into table table_name --3、向表table_name中追加记录 fields terminated by ','--4、字段终止于',',是一个逗号 (field1, field2, field3, ... fieldn)-----定义列对应顺序 field(x)要与Oracle表中的字段名保持一致(大写) 最后在DOS命令下执行以下命令: sqlldr user/password control=insert.ctl

图:表示导入了12条记录 第三种:比较简单的方法。 如果数据不是很多,可以使用如下方法: 假设表名为test_excel,有4列数据,则设置Excel的E1单元格的值为 ="insert into test_excel values(‘” & A1 & “’, ‘” & B1 & “’, ‘” & C1 & “’, ‘” & D1 & “’);” 向下拖动该公式,则生成一列sql,把其copy到sql/plus中执行即可(如果数据中有单引号,需要先替换成两个),临时导数据用这种方法还是比较方便的。 图:使用Excel的公式功能为我们生成的SQL语句 图:导入到Oracle数据库后的表数据

ASP将Excel导入到Access数据库的方法实例

Excel中的数据导入到Access中,前提是在Access中的表已经建好。 dim conn dim conn2 set conn=CreateObject("ADODB.Connection") conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=;Data Source=c:\book1.mdb" set conn2=CreateObject("ADODB.Connection") conn2.Open "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=;Extended properties=Excel 5.0;Data Source=c:\book1.xls" sql = "select * FROM [Sheet1$]" set rs = conn2.execute(sql) while not rs.eof sql = "insert into xxx([a],[bb],[c],[d]) values('"& fixsql(rs(0)) &"','"& fixsql(rs(1)) &"','"& fixsql(rs(2)) &"','"& fixsql(rs(3)) &"')" conn.execute(sql) rs.movenext wend conn.close set conn = nothing conn2.close set conn2 = nothing function fixsql(str) dim newstr newstr = str if isnull(newstr) then newstr = "" else newstr = replace(newstr,"'","'") end if fixsql = newstr end function 导入到Sql Server数据库中时,如果Excel文件和数据库不在同一台服务器上时,请参考上面的代码。在同一机器上可以参考下面代码(不需要先把表建表,程序会自己动建表,用Excel 中的第一行数据做为表的字段名): dim conn set conn=CreateObject("ADODB.Connection")

将Excel转换为SQL Server数据库方法详解

作者:cuicheng0826 日期:2011-5-11 10:26:47 Excel是一种非常灵活的电子表格软件,用它可以存储各种数据,本节将对如何将Excel转换为SQL 1.方案分析 通过Microsoft.Jet.OLEDB.4.0方式可实现使用https://www.360docs.net/doc/a811657277.html,访问Excel的目的,如以下示例代码为连接Excel数据的字符串: string strOdbcCon = @”Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=D:”2010年图书销售情况.xls;Ext ended Properties=Excel 8.0″; 2.实施过程 程序开发步骤: (1)新建一个网站,命名为25,其主页默认为Default.aspx。 (2)Default.aspx页面中添加一个Table表格,用来布局页面,然后在该Table表格中添加一个iframe 框架、两个Button控件和一个GridView控件,其中,iframe框架用来显示原始Excel数据表中的数据;Button控件分别用来将指定Excel中的数据表导入到SQL Server数据库中和将导入SQL Server 数据库中的Excel数据绑定到GridView控件上;GridView控件用来显示导入SQL Server数据库中的Excel数据。 (3)程序主要代码如下。 Default.aspx页面中,首先自定义一个LoadData方法,该方法为无返回值类型方法,主要用来将Excel 数据表中的数据导入到SQL Server数据库中。LoadData方法实现代码如下: public void LoadData(string StyleSheet) { string strCon = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source =” + Server.MapPath (”usersdb.xls”) + “;Extended Properties=Excel 8.0″; OleDbConnection myConn = new OleDbConnection(strCon); myConn.Open(); //打开数据链接,得到一个数据集 DataSet myDataSet = new DataSet(); //创建DataSet对象 string StrSql = “select * from [" + StyleSheet + "$]“; OleDbDataAdapter myCommand = new OleDbDataAdapter(StrSql, myConn); myCommand.Fill(myDataSet, “[" + StyleSheet + "$]“); myCommand.Dispose(); DataTable DT = myDataSet.Tables[ "[" + StyleSheet + "$]“]; myConn.Close(); myCommand.Dispose(); string strConn = “Data Source=(local);DataBase=Usersdb;Uid=sa;Pwd=”; SqlConnection conn = new SqlConnection(strConn);

实现Excel数据批量导入到Access

实现Excel数据批量导入到Access 2008-06-26 14:37 demo.asp <% Dim cn,oConn,connstr '打开XLS. Set cn = Server.CreateObject("ADODB.Connection") cn.Provider = "Microsoft.Jet.OLEDB.4.0 " cn.ConnectionString = "Data Source=" & Server.MapPath("data.xls") & ";" & _ "Extended Properties=Excel 8.0;" cn.Open '打开MDB. connstr="DBQ="+server.MapPath("data.mdb")+";DefaultDir=;DRIVER={Micro soft Access Driver (*.mdb)};" set oConn=server.CreateObject("ADODB.CONNECTION") oConn.open connstr '读取数据. set rsRead=server.CreateObject("ADODB.Recordset") rsRead.Open "select * from [Sheet1$]",cn,1,1 do until rsRead.EOF '写入数据库. oConn.Execute("Insert into users(userid,password)Values('"& rsRead.Fields("userid")&"','" &rsRead.Fields("password") & "')" ) rsRead.MoveNext loop %> 数据库data.mdb 表users id,uesrid,password Excel文件data.xls 数据 userid password wang w521 zhange z254 hong h112

Excel文件导入数据到SQL数据库

从Excel文件导入数据到SQL数据库 将Excel文件gongzibiao.xls中的数据导入到SQL Server 2005中。 ----导入数据并生成表 在SQL SERVER 2005新建数据库wangzhengwei,然后鼠标右键新建查询,输入 select*into MyUser_gz from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;HDR=YES;DATABASE=D:\胡兴\MyBook2.xls',sheet1$) 将生成MyUser_gz表。 如果出现:SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。解决办法是在新建的数据库上右键新建查询,然后输入下面代码: EXEC sp_configure 'show advanced options', 1 GO RECONFIGURE GO EXEC sp_configure 'Ad Hoc Distributed Queries', 1 GO RECONFIGURE GO 然后再执行 select*into MyUser_gz from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;HDR=YES;DATABASE=D:\胡兴\MyBook2.xls',sheet1$) 注意:在执行之前必须把对应的.xls文件关闭。执行完毕后需重启数据库才能看到刚导进去的数据。 查看导入的数据表如下:

ASP里-将Excel导入到Access数据库

ASP里-将Excel导入到Access数据库 2009-11-18 09:28 用ASP编的一个网站,数据库是Access,数据库名称是atest,里面有个表格user,user表格有user和password两个字段现要将Excel表格(名称是test.xls)的数据导入到atest数据库的user表中,怎么实现?高手支招............................................................ 下面连接到test.xls表sheet1$ '表后面要加个$的,一定要加这个符号 Set conn = Server.CreateObject("ADODB.Connection") conn.Open "Driver={Microsoft Excel Driver (*.xls)};ReadOnly=0;DBQ=" & Server.MapPath("test.xls") SQL1="select * from [sheet1$]" Set rs = Server.CreateObject("ADODB.Recordset") rs.Open SQL1, conn, 3, 3 '下面连接到atest.mdb表user curDir = Server.MapPath("atest.mdb") Set conn1 = Server.CreateObject("ADODB.Connection") conn1.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & curDir Set rs1 = Server.CreateObject("ADODB.Recordset") Set rs1.ActiveConnection = conn1 rs1.Source = "select * from user" rs1.CursorType = 3 ' adOpenKeyset rs1.LockType = 3 'adLockOptimistic rs1.Open Do While Not rs.Eof rs1.AddNew rs1(0)=j for i=0 to rs.Fields.Count-1 rs1(i)=Trim(rs(i)) Next rs1.Update rs.MoveNext j=j+1 Loop rs.Close rs1.Close conn.Close conn1.Close Set rs=nothing Set conn=nothing ............................................................................

把Excel表导入SQL数据库的两种方法

把Excel表导入SQL数据库的两种方法 SQLServer自身就有导入功能的 1、打开企业管理器,打开要导入数据的数据库,在表上按右键,所有任务-->导入数据,弹出DTS导入/导出向导,按下一步, 2、选择数据源 Microsoft Excel 97-2000,文件名选择要导入的xls文件,按下一步, 3、选择目的用于SQL Server 的Microsoft OLE DB提供程序,服务器选择本地(如果是本地数据库的话,如 VVV),使用SQL Server身份验证,用户名sa,密码为空,数据库选择要导入数据的数据库(如 client),按下一步, 4、选择用一条查询指定要传输的数据,按下一步, 5、按查询生成器,在源表列表中,有要导入的xls文件的列,将各列加入到右边的选中的列列表中,这一步一定要注意,加入列的顺序一定要与数据库中字段定义的顺序相同,否则将会出错,按下一步, 6、选择要对数据进行排列的顺序,在这一步中选择的列就是在查询语句中 order by 后面所跟的列,按下一步, 7、如果要全部导入,则选择全部行,按下一步, 8、则会看到根据前面的操作生成的查询语句,确认无误后,按下一步, 9、会看到表/工作表/Excel命名区域列表,在目的列,选择要导入数据的那个表,按下一步, 10、选择立即运行,按下一步, 11、会看到整个操作的摘要,按完成即可。 将EXCEL的数据提出放在数据集中,在通过循环将从表插入 <% 'On Error Resume Next '导入Excel电子表格数据到SQL Sever数据库 Open_Conn(SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName,SqlCon

将excel的数据导入已有的模板中

将excel的数据导入已有的模板中(代码) Sub Macro1() Dim arr, brr(), crr(1 To 30, 3 To 8), d As Object, k, t, a, i&, j&, m&, l& Dim w As WorksheetFunction, sh As Worksheet, wb As Workbook Application.ScreenUpdating = False Application.DisplayAlerts = False Set d = CreateObject("scripting.dictionary") arr = [a1].CurrentRegion For i = 2 To UBound(arr) s = arr(i, 2) & "_" &arr(i, 3) d(s) = d(s) & "," &i Next k = d.Keys t = d.Items Set sh = Sheets("模板") Set w = WorksheetFunction For i = 0 Tod.Count - 1 a = Split(t(i), ",") ReDimbrr(1 To w.RoundUp(UBound(a) / 30, 0) * 30, 3 To 8) For j = 1 To UBound(a) brr(j, 3) = j For l = 4 To 8 brr(j, l) = arr(a(j), l) Next Next m = j - 1 For j = w.RoundUp(m / 30, 0) * 30 To 1 Step -30 f = j - 29 If wbIs Nothing Then sh.Copy Set wb = ActiveWorkbook Else sh.Copy Before:=wb.Sheets(1) End If With ActiveSheet .[A2] = .[A2] & Split(k(i), "_")(0) .[A3] = .[A3] & Split(k(i), "_")(1) If m <= 30 Then .[a5].Resize(m, 6) = brr .Name = k(i) Else Erase crr n = 0 For v = f To f + 29

EXCEL表格导入到SQL数据库(附导入重复数据方法)

EXCEL表格导入到SQL数据库 经常有大量数据导入到数据库的需求,提供一个简单的用SQL语句导入的办法。 核心语句:SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions Data Source就是excel文件的路径,这个简单;UserId、Password和Extended properties这三个属性为“User ID=Admin;Password=;Extended properties=Excel 5.0”。最后那个“xactions”就是excel文件里所选的工作表名,注意默认的Sheet1要写成[Sheet1$]。 例如: 数据库里建好一个表testTable_1,有5个字段id, name, date, money, content,C盘下book1.xls 文件的sheet1工作表里写好对应的数据并设好数据类型,执行如下插入语句即可: insert into testTable_1 ([name], [date], [money], [content]) Select [姓名], [日期], [金额], [内容] FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="C:\Book1.xls"; User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$] 另:由于,SQL Server 2005为了安全性,安装完以后,将很多组件的默认状态设置为不启用。如果需要用到这些特性,可以由管理员手工启用。为此,SQL Server 2005还提供了一个专门的管理工具:SQL Server Surface Area Configuration 要解决本文的问题,也就是要启用AD Hoc Distributed Queries特性,执行Surface Area Configuration,选择Surface Area Configuration for features 在弹出的窗口中选择Database Engine->Ad Hoc Remote Queries,然后勾选"Enable OPENROWSET and OPENDATASOURCE support",确认即可。 如果导入的EXCEL里和表里已经有的规定唯一的键有重复的内容时候,可以分别执行下面的语句保留原有的内容。 1.首先建立一个和目标表(User)完全一样的临时表(temp) select * into temp from [User] where 1=2 2.用上述方法将数据先导入到临时表里 INSERT INTO temp (UserName, AccountID) SELECT a, b FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0', 'Data Source="C:\import.xls";

C#把Excel导入数据库的两种方法

方式一:实现在c#中可高效的将excel数据导入到sqlserver数据库中,很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,最好的办法是使用bcp,也就是System.Data.SqlClient.SqlBulkCopy 类来实现。 using System; using System.Data; using System.Windows.Forms; using System.Data.OleDb; namespace WindowsApplication2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //测试,将excel中的sheet1导入到sqlserver中 string connString = "server=localhost;uid=sa;pwd=sqlgis;database=master"; System.Windows.Forms.OpenFileDialog fd = new OpenFileDialog(); if (fd.ShowDialog() == DialogResult.OK) { TransferData(fd.FileName, "sheet1", connString); } } public void TransferData(string excelFile, string sheetName, string connectionString) { DataSet ds = new DataSet(); try { //获取全部数据 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + excelFile + ";" + "Extended Properties=Excel 8.0;"; OleDbConnection conn = new OleDbConnection(strConn); conn.Open(); string strExcel = ""; OleDbDataAdapter myCommand = null; strExcel = string.Format("select * from [{0}$]", sheetName); myCommand = new OleDbDataAdapter(strExcel, strConn);

将Excel数据导入mysql数据库的几种方案

前几天需要将Excel表格中的数据导入到mysql数据库中,在网上查了半天,研究了半天,总结出以下几种方法,下面和大家分享一下: 一.用java来将Excel表格中的数据转到mysql中 这是我们用的第一种方法,就是在java找你感谢个类,然后这个类会将Excel表格中的数据存储到内存里,然后再从内存中读出来插入到数据库中,但是要注意了,这里是存储到String[ ]数组里面,所以取出来的数据也是String类型,如果你的表里面有int类型的数据,那么你一定要将那一条取出来然后强制转换,如果你的数据表结构没有那么复杂,比较简单的话那么可以使用这种方法,如果字段的结构复杂那也可以使用,只不过要慢慢转,多写点代码,不怕累的同志可以试试.下面是我从网上查的代码: 1、添加POI jar包到项目的lib目录下 2、Excel文件目录:d://excel.xls 3、数据库字段为:num1 num2 num3 num4 num5 num6 4、数据库名:blog 5、表名:test 6、编写类:连接mysql的字符串方法、插入的方法、实体类 import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import https://www.360docs.net/doc/a811657277.html,mons.logging.Log; import https://www.360docs.net/doc/a811657277.html,mons.logging.LogFactory; import https://www.360docs.net/doc/a811657277.html,ermodel.HSSFCell; import https://www.360docs.net/doc/a811657277.html,ermodel.HSSFRow; import https://www.360docs.net/doc/a811657277.html,ermodel.HSSFSheet; import https://www.360docs.net/doc/a811657277.html,ermodel.HSSFWorkbook; public class TestExcel { //记录类的输出信息 static Log log = LogFactory.getLog(TestExcel.class); //获取Excel文档的路径 public static String filePath = "D://excel.xls"; public static void main(String[] args) { try { // 创建对Excel工作簿文件的引用 HSSFWorkbook wookbook = new HSSFWorkbook(new FileInputStream(filePath)); // 在Excel文档中,第一张工作表的缺省索引是0, // 其语句为:HSSFSheet sheet = workbook.getSheetAt(0); HSSFSheet sheet = wookbook.getSheet("Sheet1"); //获取到Excel文件中的所有行数 int rows = sheet.getPhysicalNumberOfRows();

相关文档
最新文档