计算机一级OFFICE辅导:Excel数据导入到SQL2005
分类: 计算机
时间: 2019-01-23 13:46:18
作者: 全国等级考试资料网
前段时间由于工作需要,设计了一个基于 infopath+ sql的查询系统,设计完成后,突然发现查询系统所需要的原始数据都是存放在 excel文档,如果将每条记录重新输入到 sql中,那过程将非常繁琐,通过在网络查询得到二种方法,但过程还是不太方便。现将以下几种方法汇总以下:
一、在程序中,用 ado.net。代码如下:
//连接串
string strconn = "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" + [excel文件,含路径] + ";";
oledbconnection conn = new oledbconnection(strconn);
conn.open();
datatable dtschema = conn.getoledbschematable(oledbschemaguid.tables,new object[] {null, null, null, "table"});
dataset ds = new dataset();
//一个excel文件可能有多个工作表,遍历之
foreach( datarow dr in dtschema.rows )
{
string table = dr["table_name"].tostring();
string strexcel = "select * from [" + table + "]";
ds.tables.add(table);
oledbdataadapter mycommand = new oledbdataadapter(strexcel,conn);
mycommand.fill(ds,table);
}
conn.close();
这样,读取出来的数据就藏在 dataset里了。
采用这种方式,数据库所在机器不必装有 excel。
二、在查询分析器里,直接写 sql语句:
如果是导入数据到现有表,则采用
insert into 表 select * from openrowset(’microsoft.jet.oledb.4.0’
,’excel 5.0;hdr=yes;database=c: est.xls’,sheet1$)的形式
如果是导入数据并新增表,则采用
select * into 表 from openrowset(’microsoft.jet.oledb.4.0’
,’excel 5.0;hdr=yes;database=c: est.xls’,sheet1$)的形式。
以上语句是将 excel文件里 sheet1工作表中所有的列都读进来,如果只想导部分列,可以
insert into 表 (a1,a2,a3) select a1,a2,a3 from openrowset(’microsoft.jet.oledb.4.0’
,’excel 5.0;hdr=yes;database=c: est.xls’,sheet1$)
其实可以将 openrowset(’microsoft.jet.oledb.4.0’
,’excel 5.0;hdr=yes;database=c: est.xls’,sheet1$)当成一个表,例如我就写过这样一个句子:
insert into eval_channel_employee(channel,employee_id)
select case a.渠道 when ’diy’ then 1 when ’rdc’ then 0 when ’kcm’ then 2 else 3 end
,b.id from
openrowset(’microsoft.jet.oledb.4.0’
,’excel 5.0;hdr=yes;database=c: emp ame.xls’,sheet1$) as a,pers_employee b
where a.员工编码 =b.code
不管是哪种方式,哪种途径,系统都会默认将第一行上的内容作为字段名。
这二种方式虽然非常好,但操作过程不太方便,经过测试发现在 sql2005中直接可以实现导入功能。操作过程如下:
第一步:登录到 sql server management studio,
第二步:在 “对象资源管理器 ”中右键单击 “管理 ”,在弹出列表中单击 “导入数据 ”
第三步:在 “导入向导 ”对话框中单击 “下一步 ”,进入到 “选择数据源 ”对话框,在 “数据源 ”列表中选择 “microsoft excel ”,同时选择相应的 excel 文档,完成后单击 “下一步 ”(一定要勾选该对话框中的 “首行包含列名称 ”,因此它是将 excel文档中的列标题为数据库表中的列项标题)
第四步:指定目标数据库服务,依次单击 “下一步 ”。。。。至到 “完成 ”
第五步:重新打到 sql server management studio,进入到导入的数据库表,可以发现所导入的 excel文档数据。
一、在程序中,用 ado.net。代码如下:
//连接串
string strconn = "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" + [excel文件,含路径] + ";";
oledbconnection conn = new oledbconnection(strconn);
conn.open();
datatable dtschema = conn.getoledbschematable(oledbschemaguid.tables,new object[] {null, null, null, "table"});
dataset ds = new dataset();
//一个excel文件可能有多个工作表,遍历之
foreach( datarow dr in dtschema.rows )
{
string table = dr["table_name"].tostring();
string strexcel = "select * from [" + table + "]";
ds.tables.add(table);
oledbdataadapter mycommand = new oledbdataadapter(strexcel,conn);
mycommand.fill(ds,table);
}
conn.close();
这样,读取出来的数据就藏在 dataset里了。
采用这种方式,数据库所在机器不必装有 excel。
二、在查询分析器里,直接写 sql语句:
如果是导入数据到现有表,则采用
insert into 表 select * from openrowset(’microsoft.jet.oledb.4.0’
,’excel 5.0;hdr=yes;database=c: est.xls’,sheet1$)的形式
如果是导入数据并新增表,则采用
select * into 表 from openrowset(’microsoft.jet.oledb.4.0’
,’excel 5.0;hdr=yes;database=c: est.xls’,sheet1$)的形式。
以上语句是将 excel文件里 sheet1工作表中所有的列都读进来,如果只想导部分列,可以
insert into 表 (a1,a2,a3) select a1,a2,a3 from openrowset(’microsoft.jet.oledb.4.0’
,’excel 5.0;hdr=yes;database=c: est.xls’,sheet1$)
其实可以将 openrowset(’microsoft.jet.oledb.4.0’
,’excel 5.0;hdr=yes;database=c: est.xls’,sheet1$)当成一个表,例如我就写过这样一个句子:
insert into eval_channel_employee(channel,employee_id)
select case a.渠道 when ’diy’ then 1 when ’rdc’ then 0 when ’kcm’ then 2 else 3 end
,b.id from
openrowset(’microsoft.jet.oledb.4.0’
,’excel 5.0;hdr=yes;database=c: emp ame.xls’,sheet1$) as a,pers_employee b
where a.员工编码 =b.code
不管是哪种方式,哪种途径,系统都会默认将第一行上的内容作为字段名。
这二种方式虽然非常好,但操作过程不太方便,经过测试发现在 sql2005中直接可以实现导入功能。操作过程如下:
第一步:登录到 sql server management studio,
第二步:在 “对象资源管理器 ”中右键单击 “管理 ”,在弹出列表中单击 “导入数据 ”
第三步:在 “导入向导 ”对话框中单击 “下一步 ”,进入到 “选择数据源 ”对话框,在 “数据源 ”列表中选择 “microsoft excel ”,同时选择相应的 excel 文档,完成后单击 “下一步 ”(一定要勾选该对话框中的 “首行包含列名称 ”,因此它是将 excel文档中的列标题为数据库表中的列项标题)
第四步:指定目标数据库服务,依次单击 “下一步 ”。。。。至到 “完成 ”
第五步:重新打到 sql server management studio,进入到导入的数据库表,可以发现所导入的 excel文档数据。