c#asp.net中从excel读取到数据库的外部表格式异常
问题是: 我从excel工作表将数据导入数据库的代码对于.xls很有效,但是对于.xlsx它给出了“外部表不是预期的格式。”错误 请帮我做这个 我使用的连接字符串是:c#asp.net中从excel读取到数据库的外部表格式异常,c#,asp.net,database,excel,import-from-excel,C#,Asp.net,Database,Excel,Import From Excel,问题是: 我从excel工作表将数据导入数据库的代码对于.xls很有效,但是对于.xlsx它给出了“外部表不是预期的格式。”错误 请帮我做这个 我使用的连接字符串是: <add name="Excel03ConString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0};Extended Properties='Excel 8.0;HDR={1}'"/> <add name="Exce
<add name="Excel03ConString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0};Extended Properties='Excel 8.0;HDR={1}'"/>
<add name="Excel07ConString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HDR={1}; IMEX=YES'"/>
问一个明显的问题,您确定.xls和.xlsx文件的列标题完全相同吗?即,列标题等中没有意外的额外空格。?如果标题名称与查询不匹配,则您收到的错误消息很常见。是的,它们是相同的。要问明显的问题,您确定.xls和.xlsx文件之间的列标题完全相同吗?即,列标题等中没有意外的额外空格。?如果标题名称与查询不匹配,则您收到的错误消息很常见。是的,它们是相同的。要问明显的问题,您确定.xls和.xlsx文件之间的列标题完全相同吗?即,列标题等中没有意外的额外空格。?如果标题名称与查询不匹配,则您收到的错误消息很常见。是的,它们是相同的
protected void Button2_Click(object sender, EventArgs e)
{
FileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
Extension = Path.GetExtension(FileUpload1.PostedFile.FileName);
FolderPath = ConfigurationManager.AppSettings["FolderPath"];
FilePath = FileUpload1.PostedFile.FileName;
Date = Calendar1.SelectedDate.ToShortDateString();
ImportData();
}
void ImportData()
{
string conStr = "";
switch (Extension)
{
case ".xls": //Excel 97-03
conStr = ConfigurationManager.ConnectionStrings["Excel03ConString"]
.ConnectionString;
break;
case ".xlsx": //Excel 07
conStr = ConfigurationManager.ConnectionStrings["Excel07ConString"]
.ConnectionString;
break;
}
try
{
conStr = String.Format(conStr, FilePath, "YES");
OleDbConnection Econ = new OleDbConnection(conStr);
Econ.Open();
//string Query = string.Format("Select [Id],[Name],[Status] FROM [{0}]", FileName);
//string Query = string.Format("Select [Id],[Name],[Status] FROM [XYZ$]");
string Query1 = string.Format("Select [Id],[Name],[Status] FROM [Sheet1$]");
OleDbCommand Ecom = new OleDbCommand(Query1, Econ);
DataSet ds = new DataSet();
OleDbDataAdapter oda = new OleDbDataAdapter(Ecom);
oda.Fill(ds);
string sqlconn = ConfigurationManager.ConnectionStrings["TempDatabaseConnectionString"].ConnectionString;
SqlConnection con = new SqlConnection(sqlconn);
con.Open();
DataTable Exceldt = ds.Tables[0];
//creating object of SqlBulkCopy
SqlBulkCopy objbulk = new SqlBulkCopy(con);
//assigning Destination table name
objbulk.DestinationTableName = "Trial";
//Mapping Table column
objbulk.ColumnMappings.Add("Id", "Id");
objbulk.ColumnMappings.Add("Name", "Name");
objbulk.ColumnMappings.Add("Status", "Status");
//inserting Datatable Records to DataBase
//con.Open();
objbulk.WriteToServer(Exceldt);
con.Close();
ds.Clear();
Econ.Close();
Ecom.Parameters.Clear();
objbulk.Close();
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
}