`
xitong
  • 浏览: 6207526 次
文章分类
社区版块
存档分类
最新评论

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引擎访问Excel97-2003

  1. select*fromOpenRowSet('Microsoft.Jet.OLEDB.4.0','Excel8.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls','select*from[Sheet1$]')
  2. select*fromOpenRowSet('Microsoft.Jet.OLEDB.4.0','Excel8.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls',[Sheet1$])
  3. select*fromOpenDataSource('Microsoft.Jet.OLEDB.4.0','Excel8.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls')...[Sheet1$]
  4. select*fromOpenDataSource('Microsoft.Jet.OLEDB.4.0','DataSource=D:\97-2003.xls;ExtendedProperties="Excel8.0;HDR=Yes;IMEX=1"')...[Sheet1$]

-->ACE引擎访问Excel97-2003

  1. select*fromOpenRowSet('Microsoft.ACE.OLEDB.12.0','Excel12.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls','select*from[Sheet1$]')
  2. select*fromOpenRowSet('Microsoft.ACE.OLEDB.12.0','Excel12.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls',[Sheet1$])
  3. select*fromOpenDataSource('Microsoft.ACE.OLEDB.12.0','Excel12.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls')...[Sheet1$]
  4. select*fromOpenDataSource('Microsoft.ACE.OLEDB.12.0','DataSource=D:\97-2003.xls;ExtendedProperties="Excel12.0;HDR=Yes;IMEX=1"')...[Sheet1$]

-->ACE引擎访问Excel2007

  1. select*fromOpenRowSet('Microsoft.ACE.OLEDB.12.0','Excel12.0;HDR=Yes;IMEX=1;Database=D:\2007.xlsx','select*from[Sheet1$]')
  2. select*fromOpenRowSet('Microsoft.ACE.OLEDB.12.0','Excel12.0;HDR=Yes;IMEX=1;Database=D:\2007.xlsx',[Sheet1$])
  3. select*fromOpenDataSource('Microsoft.ACE.OLEDB.12.0','Excel12.0;HDR=Yes;IMEX=1;Database=D:\2007.xlsx')...[Sheet1$]
  4. select*fromOpenDataSource('Microsoft.ACE.OLEDB.12.0','DataSource=D:\2007.xlsx;ExtendedProperties="Excel12.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的话,即可!

引自:http://blog.csdn.net/xwnxwn/article/details/5899541

分享到:
评论

相关推荐

    将Excel数据导入到SqlServer中

    将Excel中的数据导入到SqlServer中的实现方法总结。还有一个简单的例子

    C#实现Excel表数据导入Sql Server数据库中的方法

    本文实例讲述了C#实现Excel表数据导入Sql Server数据库中的方法。分享给大家供大家参考,具体如下: Excel表数据导入Sql Server数据库的方法很多,这里只是介绍了其中一种: 1、首先,我们要先在test数据库中新建一...

    excel导入sql2005的几种方法归纳

     在这个例子中,我们将使用windows验证连接到本地SQL Server实例,所使用的数据库将是ImportExcel。  在Specify Table Copy or Query(指定表复制或查询)向导界面中,选择copy data from one or more tables or ...

    SQL SERVER 与ACCESS、EXCEL的数据转换

    熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。在Transact-SQL语句中,我们主要使用OpenDataSource函数、OPENROWSET 函数,关于...

    SQL SERVER 2000开发与管理应用实例

    涉及安装和配置SQL Server、日期处理、字符处理、排序规则、编号处理、数据统计与汇总、分页处理、树形数据处理、数据导入与导出、作业、数据备份与还原、用户定义数据类型、数据库安全、系统表应用实例、SQL Server...

    sqlserver调用OPENROWSET的方法[参照].pdf

    sqlserver调用OPENROWSET的方法[参照].pdf

    SQL SERVER2005下不能使用OpenRowset创建链接服务器的问题

    SQL SERVER2005下不能使用OpenRowset创建链接服务器的问题

    2009 年度十大 SQL Server 技巧文章

    在SQL Server中使用XML数据来创建计算列,你的列定义必须包含必要的用来检测向列中插入的是什么数据的表达式。  使用XML在SQL Server上创建计算列(上)  使用XML在SQL Server上创建计算列(下) SQL Server中...

    SQL Server中导入导出数据三方法比较

    如果是在SQL Server数据库之间进行数据导入导出时,并且不需要对数据进行复杂的检验,最好使用Transact-SQL方法进行处理,因为在SQL Server数据库之间进行数据操作时,SQL是非常快的。当然,如果要进行复杂的操作,如...

    Office数据库升迁 Access 导入 SQL Server

    Office数据库升迁 Access 导入 SQL Server,相信大家都知道 SQL-Server 数据库导入导出功能吧,但当你装了精简版的SQL-Server这个功能就会没有了,也就是无法实现数据库导入导出,那么怎么办 写SQL语句? Insert ...

    SQL Server 阻止了对组件 'Ad Hoc Distributed Queries'

    SQL Server 阻止了对组件 'Ad Hoc Distributed Queries'2009年08月28日 星期五 15:00SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此...

    Excel导入Sqlserver数据库脚本

    exec sp_configure ‘show advanced options’,1 reconfigure exec sp_configure ‘Ad Hoc Distributed Queries’,1 reconfigure SELECT * INTO tmp_asset FROM OPENROWSET(‘Microsoft.Jet.OLEDB.4.0’, ‘Excel ...

    SQL SERVER、ACCESS、EXCEL数据转换

    熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。在Transact-SQL语句中,我们主要使用OpenDataSource函数、OPENROWSET 函数,关于...

    使用 OpenRowSet 和 OpenDataSource 访问 Excel 97

    在SQL SERVER中直接访问EXCEL 文件。

    SQL Server 2008高级程序设计 4/6

     10.4 理解SQLCLR及SQL Server中的.NET编程  10.5 创建聚集函数  10.6 自定义数据类型  10.7 小结 第11章 事务和锁  11.1 事务  11.2 SQL Server日志的工作方式  11.3 锁和并发  11.4 设置隔离级别 ...

    SQL Server 2008高级程序设计 2/6

     10.4 理解SQLCLR及SQL Server中的.NET编程  10.5 创建聚集函数  10.6 自定义数据类型  10.7 小结 第11章 事务和锁  11.1 事务  11.2 SQL Server日志的工作方式  11.3 锁和并发  11.4 设置隔离级别 ...

    SQL Server2005打开数据表中的XML内容时报错的解决办法

    结合在ASP.NET中使用Linq to Sql,我们可以非常方便地将XML文件存储到SQL Server数据库中。但是在默认情况下,如果你存储的XML文件比较大(超过2MB),在SQL Server管理器中不能直接点击查看XML内容而报以下错误提示...

    连接其它服务器数据库查询数据(sql server)

    以后不再使用时删除链接服务器 exec sp_dropserver '链接名', 'droplogins ' --连接远程/局域网数据(openrowset/openquery/opendatasource) --1、openrowset --查询示例 select * from openrowset( 'SQLOLEDB ', '...

    不用编程实现excel表引入sql库的方法

    不用编程实现excel表引入sql库的sql语句(前提是sql库上要装有excel)SELECT * INTO YourTableName FROM OPENROWSET(‘MSDASQL.1‘, ‘driver=Microsoft Excel Driver (*.xls);DBQ=e:tempbook2.xls‘,‘select * from ...

Global site tag (gtag.js) - Google Analytics