【问题标题】:Cannot parse some excel column无法解析某些 excel 列
【发布时间】: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


【解决方案1】:

也许你遇到了这个错误:

OleDB & mixed Excel datatypes : missing data

“HDR”的价值是什么?看看列的数据类型,可能是混合的。

【讨论】:

  • 适配器填充数据集的列后下断点,空列的类型是什么?
  • 名称:Double ,另一种列类型 - 是字符串
  • 如何将列的数据类型改为字符串?
猜你喜欢
  • 1970-01-01
  • 2011-06-18
  • 2016-04-26
  • 2014-12-25
  • 1970-01-01
  • 2018-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多