乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > 请问一下Excel该怎么导入到SQL数据库中去,ASP.Ne...-excel导入数据库源码,excel导入mysql数

请问一下Excel该怎么导入到SQL数据库中去,ASP.Ne...-excel导入数据库源码,excel导入mysql数

作者:乔山办公网日期:

返回目录:excel表格制作


string sql = "select * from [sheet1$]";

string excelConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+mappath+@";Extended Properties=""Excel 8.0;HDR=YES;""";

OleDbConnection conn = new OleDbConnection(excelConn);
OleDbCommand cmd = new OleDbCommand(sql, conn);

DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
da.Fill(dt);

return dt;

以下请参考,没有现成可用的东西,希望你从中获得的是实现思路,你要做的事情分成两步执行: 1. 先从你的Excel表获取e799bee5baa6e997aee7ad94e59b9ee7ad94363数据集合,形成一个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.0;Data Source=" + filePath + ";Extended Properties='text;HDR=No;FMT=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 = -1; string 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 = 0; i < DS.Tables[0].Rows.Count; i++) { 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("导入完成!"); }
'定义打开Excel表格的函数
Function OpenExcel(path)
dim excel,rs,strsql
On Error Resume Next
Set rs = Server.CreateObject("ADODB.RecordSet")
Set excel = Server.CreateObject("ADODB.Connection")
excel.Open "Driver={Microsoft Excel Driver (*.xls)};DBQ=" & path
If Err.number<> 0 Then
Response.Write "请检查上传的Excel文件内部格式,文件无法打开,导入失败!"
Response.End
End If
strsql = "SELECT * FROM [Sheet1$]" '在这里指定工作薄名称,默认是Sheet1$
Set rs = excel.Execute(strsql)
Set OpenExcel = rs
End Function

'读取文件中的内容
Dim rsInfo
Set rsInfo = Server.CreateObject("ADODB.RecordSet")
Set rsInfo = OpenExcel("E:/a.xls") '这里的文件路径请用Server.Path来获取

'检查读取结果
If rsInfo.State<> 1 Then
Response.Write "请检查Excel文件中的工作表命名是否为Sheet1,导入失败!"
Response.End
End If

If rsInfo.EOF And rsInfo.BOF Then
Response.Write "没有找到Excel表中的数据,导入失败!"
Response.End
End If

If IsNull(rsInfo.Fields(0)) or Trim(rsInfo.Fields(0))="" Then
Response.Write "没有找到Excel表中的数据,导入失败!"
Response.End
End If

'这里指定导入数据的列数,列数少了退出
If rsInfo.Fields.Count< 7 Then
Response.Write "Excel表中的数据列数不正确,导入失败!"
Response.End
End If

'创建数据库连接
dim dbrs,conn,sql
Set conn = Server.CreateObject("ADODB.Connection")
Set dbrs = Server.CreateObject("ADODB.Recordset")
'注: G_DB_ConnectString是连接数据库的字符串,自己定义
conn.ConnectionString = G_DB_ConnectString
conn.Open '打开数据库连接

'创建临时表
sql = "IF EXISTS (SELECT * FROM sysobjects WHERE xtype='U' and name='tmp_PartRes') "
sql = sql & "BEGIN Drop table tmp_PartRes END "
sql = sql & "Create table tmp_PartRes([ID] int identity(1,1),"
sql = sql & "PartID varchar(100),Brand varchar(100),[Package] varchar(100),"
sql = sql & "BatchNo varchar(100),[Price] varchar(100),[Stock] varchar(100) default('0'),"
sql = sql & "Brief varchar(100),StockFlag int default(1),"
sql = sql & "SuperFlag int default(1),SaleFlag int default(1))"
conn.execute sql

'取表结构 注意: 只取表的结构, 不要数e799bee5baa6e79fa5e98193e4b893e5b19e366据, 因为我这个是刚创建的临时表, 没有数据,
'如果表中存在数据, 要注意加上条件句, 防止取到数据 如: where ID = -1
sql = "SELECT * FROM tmp_PartRes"
dbrs.CursorLocation = 3 '这一定要设置为3
dbrs.Open sql,conn, 3, 4 '这里的参数必须是3和4

'取到表结构后, 必须要把活动连接及数据库连接关闭,这个很重要, 否则导入速度特慢.
Set dbrs.ActiveConnection = Nothing
conn.close

'提取Excel中的数据, 将excel中的数据放入到数据库表中.
While Not rsInfo.EOF
If Trim(rsInfo.Fields(0))<> "" Then
dbrs.AddNew
dbrs("PartID") = Ucase(Trim(rsInfo.Fields(0)))
dbrs("Brand") = Trim(rsInfo.Fields(1))
dbrs("Package") = Trim(rsInfo.Fields(2))
dbrs("BatchNo") = Trim(rsInfo.Fields(3))
dbrs("Price") = Trim(rsInfo.Fields(4))
If Trim(rsInfo.Fields(5))<>"" Then
dbrs("Stock") = Trim(rsInfo.Fields(5))
Else
dbrs("Stock") = "0"
End If
dbrs("Brief") = Trim(rsInfo.Fields(6))
End If
rsInfo.MoveNext
Wend

'更新记录集到数据库临时表
conn.Open '打开连接
dbrs.ActiveConnection = conn
dbrs.UpdateBatch '批量更新函数

'更新完成后, 关闭连接
dbrs.Close
Set dbrs = Nothing
rsInfo.Close
Set rsInfo = Nothing

没明白你什么意思.
是要把Excel文件存到sqlserver中海是把Excel中的内容存Sqlserver中
如果是内容.那excel中格式是什么,字段呢?数据库表和字段都建立完了吗?是什么?

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网