Asp.Net中使用OpenRowSet操作Excel表,导入Sql Server(实例)
有两种接口可供选择:Microsoft.Jet.OLEDB.4.0(以下简称 Jet 引擎)和Microsoft.ACE.OLEDB.12.0(以下简称 ACE 引擎)。
Jet 引擎大家都很熟悉,可以访问 Office 97-2003,但不能访问 Office 2007。
ACE 引擎是随 Office 2007 一起发布的数据库连接组件,既可以访问 Office 2007,也可以访问 Office 97-2003。
另外:Microsoft.ACE.OLEDB.12.0 可以访问正在打开的 Excel 文件,而 Microsoft.Jet.OLEDB.4.0 是不可以的。
语法举例:
--> Jet 引擎访问 Excel 97-2003
- select * from OpenRowSet('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls', 'select * from [Sheet1$]')
- select * from OpenRowSet('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls', [Sheet1$])
- select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls')...[Sheet1$]
- select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0', 'Data Source=D:\97-2003.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"')...[Sheet1$]
--> ACE 引擎访问 Excel 97-2003
- select * from OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls', 'select * from [Sheet1$]')
- select * from OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls', [Sheet1$])
- select * from OpenDataSource('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls')...[Sheet1$]
- select * from OpenDataSource('Microsoft.ACE.OLEDB.12.0', 'Data Source=D:\97-2003.xls;Extended Properties="Excel 12.0;HDR=Yes;IMEX=1"')...[Sheet1$]
--> ACE 引擎访问 Excel 2007
- select * from OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\2007.xlsx', 'select * from [Sheet1$]')
- select * from OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\2007.xlsx', [Sheet1$])
- select * from OpenDataSource('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\2007.xlsx')...[Sheet1$]
- select * from OpenDataSource('Microsoft.ACE.OLEDB.12.0', 'Data Source=D:\2007.xlsx;Extended Properties="Excel 12.0;HDR=Yes;IMEX=1"')...[Sheet1$]
注:
Excel 2007 工作簿文件的扩展名是:xlsx
HDR=Yes/No
可选参数,指定 Excel 表的第一行是否列名,缺省为 Yes,可以在注册表中修改缺省的行为。
IMEX=1
可选参数,将 Excel 表中混合 Intermixed 数据类型的列强制解析为文本。
转自:http://www.cnblogs.com/jacker1979/archive/2011/03/04/1971200.html
================================================= 【第二种方法】
ASP.NET导入Excel到数据库(SQL)
在我们开发各类应用型系统,经常会遇到导入导出Excel,为什么会用到他呢?
企业或者单位在从无信息化到信息化的一个转变过程。
在没有信息化的企业或单位之前,一般都采用Excel来记录相应的数据,做统计计算的作用,那么当企业或单位实施信息化之后必然会将原有数据导入到系统中去存储与分析。那么作为程序员就必然面临一个将数据导入数据库的功能,下面针对此类情况作如下概述。
在ASP.NET的B/S架构下,去导入Excel。
举例来说:
我们需要导入员工信息表到数据库中。Excel格式如下:
那么在我们了解了这个之后,下面就是在ASP.NET中通过button来触发导入事件的发生。
protected void btnChange_Click(object sender, EventArgs e)
{
UserInfoClass tClass = (UserInfoClass)Session["UserInfo"];
string tLanguageType = tClass.Language;
//获取文件路径
string filePath = this.file1.PostedFile.FileName;
if (filePath != "")
{
if (filePath.Contains("xls"))//判断文件是否存在
{
InputExcel(filePath);
}
else
{
MessageBox.Show("请检查您选择的文件是否为Excel文件!谢谢!");
}
}
else
{
MessageBox.Show("请先选择导入文件后,再执行导入!谢谢!");
}
}
private void InputExcel(string pPath)
{
string conn = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + pPath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
OleDbConnection oleCon = new OleDbConnection(conn);
oleCon.Open();
string Sql = "select * from [Sheet1$]";
OleDbDataAdapter mycommand = new OleDbDataAdapter(Sql, oleCon);
DataSet ds = new DataSet();
mycommand.Fill(ds, "[Sheet1$]");
oleCon.Close();
int count = ds.Tables["[Sheet1$]"].Rows.Count;
for (int i = 0; i < count; i++)
{
string tUserID, tUserName, tDept, tEmail, tLeader, tAngent;
tUserID = ds.Tables["[Sheet1$]"].Rows[i]["員工代號"].ToString().Trim();
tUserName = ds.Tables["[Sheet1$]"].Rows[i]["員工姓名"].ToString().Trim();
tDept = ds.Tables["[Sheet1$]"].Rows[i]["所屬部門代號"].ToString().Trim();
tEmail= ds.Tables["[Sheet1$]"].Rows[i]["E-Mail Address"].ToString().Trim();
tLeader = ds.Tables["[Sheet1$]"].Rows[i]["直属主管"].ToString().Trim();
tAngent = ds.Tables["[Sheet1$]"].Rows[i]["代理人"].ToString().Trim();
string excelsql = "insert into " + this.UserInfo.Company + "..[resak] (resak001, resak002, resak015,resak005,resak013,resak009) values ('" + tUserID + "','" + tUserName + "','" + tDept + "','" + tEmail + "','" + tLeader + "','" + tAngent + "')";
DBCommand cmd = DscDBData.GetDataDBCommand();
cmd.ExeNonQuery(excelsql);
}
}
当然此部分内容拿过来要稍作修改,比如最后的执行Insert语句的部分,等内容。
上面完成了ASP.NET下导入Excel到数据库的功能。
接下来如果你希望直接将Excel在SQL语句中导入到数据库,实现方式如下:
SELECT * INTO PURTC
FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=D:\12.xls',sheet1$)
注意将Excel中的栏位与表中栏位对应Ok的话,即可!
相关文章
- 【原创】开源.NET排列组合组件KwCombinatorics使用(二)——排列生成
- .NET 开源Protobuf-net从入门到精通
- .NET开源Protobuf-net组件葵花手册
- .NET轻量级ORM组件Dapper葵花宝典
- ASP.NET常用导出Excel方法汇总
- Asp.Net Web API 2第十三课——ASP.NET Web API中的JSON和XML序列化
- Asp.Net中使用Couchbase——Memcached缓存使用篇
- .Net反射机制分析和使用
- 机器学习笔记 - Traffic-Net训练交通拥堵程度
- ASP.NET Core中的依赖注入(3): 服务的注册与提供
- 【原创】.NET读写Excel工具Spire.Xls使用(5)重量级的Excel图表功能
- 常见掌握类库与工具体系图 艾提拉总结 Atitit 文档资料处理重要类库与工具体系树 Configuration yml xml jsoup Net apache commons net
- Atitit. C#.net clr 2.0 4.0新特性
- paip.java c# .net php python调用c++ c dll so windows api 总结
- image_net分类说明书
- 【nodejs原理&源码赏析(5)】net模块与通讯的实现
- Net Core 微服务 - 如何将.Net Core Web Api服务部署到Kubernetes (K8s)中 转载
- ASP.NET Core 配置 MVC - ASP.NET Core 基础教程 - 简单教程,简单编程
- JAVA操作Excel表格:方法一:jxl的使用①:Excel实战之JXL创建excel文件
- springboot使用jxls导出excel___(万能通用模板)--- SpringBoot导入、导出Excel文件___SpringBoot整合EasyExcel模板导出Excel