[英]Problems with writing a code to import excel files into database with asp.net
I'm having problems with importing Excel data into a database.我在将 Excel 数据导入数据库时遇到问题。 I receive the following error:我收到以下错误:
An OLE DB Provider was not specified in ConnectionString. ConnectionString 中未指定 OLE DB 提供程序。 An example would be, 'Provider = SQLOLEDB;'.例如,'Provider = SQLOLEDB;'。
Here's my code:这是我的代码:
using System;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Unnamed1_Click(object sender, EventArgs e)
{
string excelPath = Server.MapPath("~/Files/") + Path.GetFileName(FileUploadBtn.PostedFile.FileName);
FileUploadBtn.SaveAs(excelPath);
string conString = string.Empty;
string extension = Path.GetExtension(FileUploadBtn.PostedFile.FileName);
switch (extension)
{
case ".xls":
conString = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
break;
case ".xlsx":
conString = ConfigurationManager.ConnectionStrings["Excel07+ConString"].ConnectionString;
break;
}
conString = string.Format(conString, excelPath);
using (OleDbConnection excel_con = new OleDbConnection(conString))
{
excel_con.Open();
string sheet1= excel_con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null).Rows[0]["TABLE_NAME"].ToString();
DataTable dtExcel = new DataTable();
dtExcel.Columns.AddRange(new DataColumn[3]
{
new DataColumn ("Name", typeof(string)),
new DataColumn ("City",typeof(string)),
new DataColumn ("Age",typeof(int))
});
using (OleDbDataAdapter oda = new OleDbDataAdapter("SELECT * FROM [" + sheet1+ "]", excel_con))
{
oda.Fill(dtExcel);
}
excel_con.Close();
string consString = ConfigurationManager.ConnectionStrings["costumizadoConnectionString"].ConnectionString;
using (SqlConnection con = new SqlConnection(conString))
{
using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
{
sqlBulkCopy.DestinationTableName = "dbo.test";
sqlBulkCopy.ColumnMappings.Add("Name", "Name");
sqlBulkCopy.ColumnMappings.Add("City", "City");
sqlBulkCopy.ColumnMappings.Add("Age", "Age");
con.Open();
sqlBulkCopy.WriteToServer(dtExcel);
con.Close();
}
}
}
}
Web.config:网页配置:
<configuration>
<connectionStrings>
<add name="costumizadoConnectionString" connectionString="Data Source=PEDRO-PC\SQLEXPRESS;Initial Catalog=costumizado;Integrated Security=True; Provider=SQLNCLI10.1"
providerName="System.Data.OleDb" />
<add name="Excel03ConString" connectionString="Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES'" />
<add name="Excel07+ConString" connectionString="Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES'" />
</connectionStrings>
</configuration>
Error line:错误行:
using (OleDbConnection excel_con = new OleDbConnection(conString))
Your Excel03ConString
and Excel07+ConString
connection strings are missing the provider
attribute name.您的Excel03ConString
和Excel07+ConString
连接字符串缺少provider
属性名称。 Change them to the following:将它们更改为以下内容:
<add name="Excel03ConString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES'" />
<add name="Excel07+ConString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES'" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.