0
我有一个奇怪的问题,
当我尝试打开并加载Excel数据到DataTable,
在Excel工作表中加载一些数据,但有些数据不加载,
是什么问题,
你能帮助我吗?
我加了GetExcelData函数,
请看这段代码,
请告诉我是什么问题。的Excel在C#中的DataTable错误
GROUP CLASS TYPE C1 C2 C3 C4 C4 C5
M1 10 A D B D A A D
M1 10 B C D E E D D
M2 11 A D D D D D E
M2 11 B C D E D E A
上面我放置了样本表。
它只复制GROUP,CLASS和TYPE列中的数据。
但奇怪的是,在一些Excel文件中,这个错误不会发生,
,我没有找到答案,决定在这里问它。
public DataTable GetExcelData(string fileName, string sheetName)
{
string sql = "";
OleDbConnection conn = new OleDbConnection();
OleDbCommand command;
OleDbDataAdapter adapter = new OleDbDataAdapter();
DataTable dt = new DataTable();
command = conn.CreateCommand();
string excel_file = fileName;
string excel_type = System.IO.Path.GetExtension(excel_file);
string connstr = "";
if(excel_type=="XLSX")
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=Excel 8.0";
else
connstr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +fileName + ";Extended Properties='Excel 12.0;IMEX=1; HDR=YES'";
conn.ConnectionString = connstr;
sql = "SELECT * FROM [" + sheetName + "$]";
command.CommandText = sql;
adapter.SelectCommand = command;
adapter.Fill(dt);
return dt;
}
请添加更多的信息在什么数据加载,什么没有,我们还需要知道的Excel工作表中的内容,至少在数据类型 – ntziolis 2012-03-17 13:08:48
不会吧需要交换两个连接字符串?你正在使用Excel 8.0的.xlsx文件,我相信这应该是其他方法。 – xxbbcc 2012-03-17 13:10:36
@xxbbcc:起初我以为同样的事情,但代码将工作,因为对'GetExtension()'的调用将返回“.xlsx”而不是“XLSX”,这意味着将无意中选择正确的连接字符串。所以它的工作原理是错误的。 – 2012-05-08 00:10:05