请问一下Excel该怎么导入到SQL数据库中去,ASP.Net实现,可以给我讲一下原理或者发一下源码!谢谢

请问一下Excel该怎么导入到SQL数据库中去,ASP.Net实现,可以给我讲一下原理或者发一下源码!谢谢,第1张

以下请参考,没有现成可用的东西,希望你从中获得的是实现思路,你要做的事情分成两步执行: 1. 先从你的Excel表获取数据集合,形成一个DataSet数据集,这个过程你需要指定文件路劲连接到Excel表读取数据。我这里有一个读取CSV文件数据的方法,读完文件之后返回一个DataSet的例子,和你要的EXCEL读取几乎一样。代码如下: #region 执行读取CSV文件并返回DataSet /// <summary> /// 执行读取CSV文件并返回DataSet /// </summary> /// <returns>返回DataSet</returns> public DataSet CsvForDataset(string filePath, string fileName) { //string strConn = @"Driver={Microsoft Text Driver (*.txt*.csv)}Dbq=" + filePath + "Extensions=asc,csv,tab,txt" string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0Data Source=" + filePath + "Extended Properties='textHDR=NoFMT=Delimited'" string strSQL = " Select * from " + fileName//OdbcConnection objConn = new OdbcConnection(strConn)OleDbConnection objConn = new OleDbConnection(strConn)DataSet ds = new DataSet() try { //OdbcDataAdapter da = new OdbcDataAdapter(strSQL, objConn)OleDbDataAdapter da = new OleDbDataAdapter(strSQL, objConn)da.Fill(ds, "OutputTemp_CGT")} catch (Exception ex) { } finally { objConn.Dispose()objConn.Close()} return ds} #endregion 2. 第二步是将你的DataSet写入到数据库中对应的表,这个通过一个循环去写入,需要注意数据集合中的内容与表字段的一一对应,以下是代码: #region 执行读取DataSet记录集合到Sql表 /// <summary> /// 执行读取DataSet记录集合到Sql表 /// </summary> /// <returns>返回是否读取成功</returns> public int DatasetForSQL(DataSet DS) { int result = -1string strConn = "Initial Catalog='" + DatabaseName + "'password='" + DatabasePassword + "'User ID='" + DatabaseUser + "'Data Source='" + DatabaseServer + "' " SqlConnection conn = new SqlConnection(strConn)SqlCommand cmd conn.Open() try { for (int i = 0i <DS.Tables[0].Rows.Counti++) { string strSerialNo = DS.Tables[0].Rows[i][0].ToString()string strMACNo = DS.Tables[0].Rows[i][1].ToString()string strWANUser = DS.Tables[0].Rows[i][2].ToString()string strWANPassword = DS.Tables[0].Rows[i][3].ToString()string strSSID = DS.Tables[0].Rows[i][4].ToString()string strSSIDPassword = DS.Tables[0].Rows[i][5].ToString()string strPIN = DS.Tables[0].Rows[i][6].ToString() string strSql = " INSERT INTO OutputTemp_CGT(SerialNo,MACNo,WANUser,WANPassword,SSID,SSIDPassword,PIN) " + " Values ('" + strSerialNo + "','" + strMACNo + "','" + strWANUser + "','" + strWANPassword + "','" + strSSID + "','" + strSSIDPassword + "','" + strPIN + "') " cmd = new SqlCommand(strSql, conn)cmd.ExecuteNonQuery() cmd.Dispose()} result = 0} catch (Exception ex) { result = -1} finally { conn.Dispose()conn.Close()} return result} #endregion 补充: 特别说明一下,以上代码是两个完整的方法,分别有传入参数和返回数据,你可以在某一个事件或者逻辑执行中直接调用这两个方法,比如直接使用下面两句: DataSet ds = CsvForDataset("导入文件的完整路径和名称","导入的表名称") if(DatasetForSQL(ds)) { msg.Box("导入完成!") }

原理很简单,我作过,使用OLE打开EXCEL文件,逐行读取数据EXCEL数据,再逐行用通过ADO控件写入表中,当然还有别的方法,不过我没用过.

这里有些参考资料,是 *** 纵EXCEL的,对你会有帮助:

http://www.ccrun.com/article.asp?i=529&d=0iezy5

================================

一个另类的方法,用企业管理器建立一个导入EXCEL的DTS包,然后建立一个批处理,通过DTSRUN执行导入 *** 作,批处理内容如下:

@@echo

off

if

[%1]

==

[]

goto

Usage

if

[%2]

==

[]

goto

Usage

if

[%3]

==

[]

goto

Usage

cls

SET

LOGFILE=%2

echo

%TIME%

DTS包开始执行.........

>>

%LOGFILE%

echo

------------------------------------------

>>

%LOGFILE%

@dtsrun

/F

%1

/N

%3

>>

%2

if

errorlevel

1

goto

Error

echo

%TIME%

DTS包执行完毕.........

>>

%LOGFILE%

echo

------------------------------------------

>>

%LOGFILE%

PAUSE

goto

FINISH

:Error

echo

------------------------------------------

>>

%LOGFILE%

echo

DTS包执行错误,请查看日志

.........

echo

%TIME%

DTS包执行错误.

>>

%LOGFILE%

pause

goto

FINISH

:Usage

echo.

echo

用法:通过程序调用,缺少参数

:FINISH

注意dtsrun可以有多个参数,这里的三个参数指DTS文件,包名称和日志文件

最后在BCB里调用这个批处理程序即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6685739.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存