乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > <em>ASP.NET</em>中如何将Excel表中的数据导入到数据库中?-asp.net e

<em>ASP.NET</em>中如何将Excel表中的数据导入到数据库中?-asp.net e

作者:乔山办公网日期:

返回目录:excel表格制作


以下请参考,没有现成可用的东西,希望你从中获得的是实现思路,你要做的事情分成两步执行: 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.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写入到数据库中对应的表,这个通过一个循环去写入,需要注意数据集合中的内容与表字段的一一对应,以e5a48de588b67a686964616f363下是代码: #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("导入完成!"); }

ASP.NET中将Excel表中的数据导入到数据库中的方法是利用可视化界面工具直接选择字段映射导入。
1)接受数据导入的表已经存在。
insert into t1 select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,
'Excel 5.0;HDR=YES;DATABASE=c:\\test.xls',sheet1$);
2)导入数据并生成表。
select * into t1 from OPENROWSET('MICROSOFT.JET.OLEDB.4.0',
'Excel 5.0;HDR=YES;DATABASE=c:\\test.xls',sheet1$);

3) 导入Excel中指定的列到数据库表中指定的列。
INSERT INTO t1(a1,a2,a3) SELECT a1,a2,a3 FROM OPENROWSET'MICROSOFT.JET.OLEDB.4.0' ,'Excel5.0; HDR=YES; DATABASE=c:\\test.xls',sheet1$);
需要注意的地方。
1)外围应用配置器的设置。
从“功能外围应用配置器”e79fa5e98193e59b9ee7ad94331中选择“启动 OPENROWSET 和 OPENDATASOURCE 支持”选项。
2)关闭Excel表。
如果在导入时要导入的Excel表格处于打开状态,会提示:
“无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "microsoft.jet.oledb.4.0" 的数据源对象。”
3)导入数据时,Excel的首行会作为表头,若导入到已存在的数据库表,则忽略首行。
你数据库必须有这e69da5e887aae79fa5e98193336几张表,或者在导入的时候根据excel的表头去创建拿几张表,读取excel的数据insert到表中。/// <summary>
/// 将Excel中的数据通过OLE连接导入DataSet
/// </summary>
/// <param name="filePath"></param>
/// <param name="ds"></param>
/// <returns></returns>
public void ImportExcelToDataSet(string filePath, DataSet ds)
{
string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + filePath + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";//HDR标识是否有表头,IMEX标识格式是文本
DataTable dt = null;
OleDbConnection conn = new OleDbConnection(strConn);//建立OLE连接
conn.Open();
OleDbDataAdapter odda = null;
try
{
dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);//获得工作表名
int num = dt.Rows.Count;
if (dt != null)
{
string[] sheetName = new string[num];//用来存储工作表名
int i = 0;
foreach (DataRow row in dt.Rows)//循环读取工作表名
{
sheetName[i] = row["TABLE_NAME"].ToString();
i++;
}
for (int j = 0; j < num; j++)
{
string sql="select * from [" + sheetName[j] + "]";
odda = new OleDbDataAdapter(sql, conn);
odda.Fill(ds, sheetName[j]);//获取工作表中的数据
}
}
AddDatasetToSQL(ds,6);
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}

private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{

//// <summary>
/// 从Excel提取数据--》Dataset
/// </summary>
/// <param name="filename">Excel文件路径名</param>

try
{
DataSet ds=new DataSet();
if (this.openFileDialog1.SafeFileName.Split('.')[1] == "xls")
{
ImportExcelToDataSet(this.openFileDialog1.FileName, ds);
}

//if (this.openFileDialog1.FileName == string.Empty)
//{
// throw new ArgumentNullException("Excel文件上传失败!");
//}

//string oleDBConnString = String.Empty;
//oleDBConnString = "Provider=Microsoft.Jet.OLEDB.4.0;";
//oleDBConnString += "Data Source=";
//oleDBConnString += this.openFileDialog1.FileName;
//oleDBConnString += ";Extended Properties=Excel 8.0;";
//OleDbConnection oleDBConn = null;
//OleDbDataAdapter oleAdMaster = null;
//DataTable m_tableName=new DataTable();
//DataSet ds=new DataSet();

//oleDBConn = new OleDbConnection(oleDBConnString);
//oleDBConn.Open();
//m_tableName=oleDBConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null);

//if (m_tableName != null && m_tableName.Rows.Count > 0)
//{

// m_tableName.TableName = this.openFileDialog1.SafeFileName.Split('.')[0];

//}
//string sqlMaster;
//sqlMaster = "select * from Sheet1";
//oleAdMaster=new OleDbDataAdapter(sqlMaster,oleDBConn);
//oleAdMaster.Fill(ds,"m_tableName");
//oleAdMaster.Dispose();
//oleDBConn.Close();
//oleDBConn.Dispose();

//AddDatasetToSQL(ds,6);
}
catch(Exception ex)
{
throw ex;
}
}
/// <summary>
/// 将Dataset的数据导入数据库
/// </summary>
/// <param name="pds">数据集</param>
/// <param name="Cols">数据集列数</param>
/// <returns></returns>
private bool AddDatasetToSQL(DataSet pds, int Cols)
{
int ic, ir;
ic = pds.Tables[0].Columns.Count;
if (pds.Tables[0].Columns.Count < Cols)
{
throw new Exception("导入Excel格式错误!Excel只有" + ic.ToString() + "列");
}
ir = pds.Tables[0].Rows.Count;
if (pds != null && pds.Tables[0].Rows.Count > 0)
{

for (int i = 0; i < pds.Tables[i].Rows.Count; i++)
{
Add(
pds.Tables[0].Rows[i][1].ToString(), pds.Tables[0].Rows[i][2].ToString(),
pds.Tables[0].Rows[i][3].ToString(), pds.Tables[0].Rows[i][4].ToString(),
pds.Tables[0].Rows[i][5].ToString()
);

}

}
else
{
throw new Exception("导入数据为空!");
}
return true;
}
至于怎么插入数据 - - 你自己写吧

ASP.NET中将Excel表中的数据导入到数据库中的方法是利用可视化界面工具直接选择字段映射导入。
1)接受数据导入的表已经存在。
insert into t1 select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,
'Excel 5.0;HDR=YES;DATABASE=c:\\test.xls',sheet1$);
2)导入数据并生成表。
select * into t1 from OPENROWSET('MICROSOFT.JET.OLEDB.4.0',
'Excel 5.0;HDR=YES;DATABASE=c:\\test.xls',sheet1$);

3) 导入Excel中指定的列到数据库表中指定的列。
INSERT INTO t1(a1,a2,a3) SELECT a1,a2,a3 FROM OPENROWSET'MICROSOFT.JET.OLEDB.4.0' ,'Excel5.0; HDR=YES; DATABASE=c:\\test.xls',sheet1$);
需要注意的地方。
1)外围应用配置器的设置。
从“功能外围应用配置器”中选择“启动 OPENROWSET 和 OPENDATASOURCE 支持”选项。
2)关闭Excel表。
如果在导入时要导入的Excel表格处于打开状态,会提示:
“无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "microsoft.jet.oledb.4.0" 的数据源对象。”
3)导入数据时,Excel的首行会作为表头,若导入到已存在的e799bee5baa6e59b9ee7ad94337数据库表,则忽略首行。

相关阅读

  • -net操作excel,net excel

  • 乔山办公网excel表格制作
  • 你问的问题很奇怪。怎么说知呢。其实所有的的借口类都可以完成你所说的操作。只不道过都需要一个共同的前提!那就是专你要在com组件中引用Excel!然后实例Excel进程然后是book,接着
  • -asp net excel,asp excel

  • 乔山办公网excel表格制作
  • using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Data;using System.IO;using System.Text;using Syste
关键词不能为空

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