【问题标题】:Cant Read Cells Contain '$' from Excel无法从 Excel 中读取包含“$”的单元格
【发布时间】:2015-04-08 06:13:03
【问题描述】:

我正在使用此代码从 excel 中读取,但是有些单元格{D2 , D4 } 程序无法从包含 ('$') {D2 , D4} 的 excel 文件中读取它们。

OpenFileDialog ex = new OpenFileDialog();
ex.Filter = "XLS|*.xls|All|*.*";

if (ex.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
    try
    {
        var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", ex.FileName);
        var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet7$]", connectionString);
        var ds = new DataSet();
        adapter.Fill(ds);
        DataTable data = ds.Tables[0];
        DATAGRID1.DataSource = data;
    }

那么如何得到如图所示的这个值呢?

【问题讨论】:

  • 这不是公式吧?
  • 看看this answer有没有帮助

标签: c# winforms vba excel


【解决方案1】:

更改您的连接字符串以强制驱动程序将所有数据视为文本,而不是对数字、日期等进行假设。您可以通过添加“IMEX=1;”来做到这一点:

Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;IMEX=1

当然,一旦您检索数据以将事物转换回您想要的数据类型,您将有更多工作要做。

【讨论】:

  • Crowcoder First thnaks for you support 但是当我将它添加到我的代码中时,这个错误在我看来“找不到 installabele ISAM”太热了来解决这个问题??
  • 试用 OleDb 提供程序:Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties="Excel 12.0;HDR=YES;IMEX=1;"
  • Crowcoder 再次感谢,但“找不到可安装的 ISAM”。错误仍然出现... :(
  • 尝试在扩展属性周围加上单引号:".....='Excel 8.0;HDR=YES;IMEX=1'"
【解决方案2】:

应该强制它平等对待所有文本

Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""

【讨论】:

  • JLILI Aman 感谢您的支持,但我发现了这个错误......找不到可安装的 ISAM.... :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-26
  • 2017-04-19
  • 1970-01-01
  • 2020-12-16
  • 1970-01-01
  • 2021-01-17
相关资源
最近更新 更多