以下请参考,没有现成可用的东西,希望你从中获得的是实现思路,你要做的事情分成两步执行: 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里调用这个批处理程序即可。
评论列表(0条)