由于工作的需要读取Excel文件导入数据库,由于列的数据类型不确定,可能是数值也有可能是字符串,所以导致数据不能读取的问题,最后才发现是连接字符串的问题,正确的代码如下:

privateDataSetInstrumentExcelToDataSet(stringPath)...{
try...{
stringstrConn="Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource="+Path+";"+"ExtendedProperties='Excel8.0;IMEX=1'";
OleDbConnectionconn=newOleDbConnection(strConn);
conn.Open();
OleDbDataAdaptermyCommand=null;
DataTableschemaTable=conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,null);
stringtableName=schemaTable.Rows[0][2].ToString().Trim();
stringstrExcel="SELECT*FROM["+tableName+"]";
myCommand=newOleDbDataAdapter(strExcel,strConn);
dsExcel=newDataSet();
myCommand.Fill(dsExcel,"table1");
conn.Close();
}catch(OleDbExceptionole)...{
throwole;
}catch(SystemExceptionse)...{
}
returndsExcel;
}
完整的连接字符串是:string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties='Excel 8.0;HDR=NO;IMEX=1'" 其中Path为excel的路径,关键在于Extended Properties属性的参数,HDR=NO是说是否要出现一行标题头,IMEX=1说明excel内容按全文本方式读取。
本文解决了一个常见的问题:如何将Excel文件中的数据导入到数据库中,特别是当数据列包含不确定的数据类型时。通过调整连接字符串中的参数,如设置IMEX=1以确保所有数据都作为文本读取,以及设置HDR=NO来避免读取标题行。
101

被折叠的 条评论
为什么被折叠?



