【发布时间】:2015-04-08 20:52:13
【问题描述】:
美好的一天!
我尝试打开 Excel 文件并将其解析为 DataSet。
所以,我使用 OleDbConnection:
if (_filePath.Substring(_filePath.LastIndexOf('.')).ToLower() == ".xlsx")
// strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
// + _filePath + ";Extended Properties=\"Excel 12.0;HDR=" + HDR + ";IMEX=0\"";
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
+ _filePath + ";Extended Properties=\"Excel 12.0 Xml;HDR=" + HDR + ";IMEX=1;TypeGuessRows=0;ImportMixedTypes=Text;\"";
// strConn="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + _filePath + ";Extended Properties=Excel 12.0;";
else
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + _filePath + ";Extended Properties=\"Excel 8.0;HDR=" + HDR + ";IMEX=1\"";
但是有些列是空的! 下一列解析得很好(使用相同的数据)。
你能告诉我如何解决它吗?
然后我填充数据集:
OleDbConnection conn = new OleDbConnection(strConn);
System.Data.DataSet dtSet;
System.Data.OleDb.OleDbDataAdapter oleCommand;
oleCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [" + sheetName + "]", conn);
oleCommand.TableMappings.Add("Table", sheetName);
dtSet = new System.Data.DataSet();
oleCommand.Fill(dtSet);
oleCommand.Dispose();
conn.Close();
return dtSet.Tables[0];
但是,有些列是空的!
可能是因为excel文件有格式:
Cell1--------------|Value1------------|
Cell2---|Cell3-----|Value2---|Value4--|
所以,数据集填充列:
Cell1---|-------|--Value1------|-----|
Cell2---|Cell3--|---Empty(!)---|Value4|
所以,我需要获取 Empty(!) 列。
关于列无效数据。
我将此列复制并粘贴到右列 - 它有效!
但是,我应该使用最后一种格式,而不是我的。
HDR="否";
【问题讨论】:
-
用实际解析粘贴代码(不管你用这个词是什么意思)。您刚刚提供了创建 ConnectionString 的代码。
-
提供你为解析而实现的完整代码
标签: c# excel dataset oledbconnection