【问题标题】:Could not read data from excel in c#无法从 C# 中的 excel 中读取数据
【发布时间】:2017-05-08 11:22:57
【问题描述】:

我正在尝试从我已经创建的 excel 文件中读取数据。 但是,在运行代码时,始终会在同一路径中创建具有相同名称的新损坏文件。并且还收到错误消息“Microsoft Jet 数据库引擎找不到对象 'Sheet1$'。确保该对象存在并且您正确拼写了它的名称和路径名。”

这是我的代码

public void readdata()
        {
           //var fileName = string.Format("{0}\\C:\\Indputdata.xls", Directory.GetCurrentDirectory());
            //var con = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);

            string con = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Inputdata.xls;Extended Properties='Excel 8.0;HDR=Yes;'";
            using (OleDbConnection connection = new OleDbConnection(con))
            {
              connection.Open();
                OleDbCommand command = new OleDbCommand("select * from [Sheet1$]", connection);
                using (OleDbDataReader dr = command.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        var row1Col0 = dr[0];
                        Console.WriteLine(row1Col0);
                    }
                }

            }
        }

【问题讨论】:

  • 第一个文档的工作表名称是什么?
  • 无论如何,如果您的文档是使用非英语语言的 MS Excel 创建的,那么您必须使用工作表的本地化名称或重命名它们。
  • @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Inputdata.xls... ? 试试@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= D:\Inputdata.xls...
  • 请把你的连接字符串和这个connectionstrings.com/excel比较一下
  • Provider=Microsoft.ACE.OLEDB.12.0;数据源=D:\\Inputdata.xls;扩展属性="Excel 12.0 Xml;HDR=YES";

标签: c#


【解决方案1】:

对于 Excel 2007 和 2010,您需要使用 ACE OLEDB 提供程序。Jet OLEDB 提供程序已被弃用,不支持 Office 2007 或更高版本的文件。

试试这个Extended Properties=""Excel 8.0;HDR=Yes"";"

 Data Source=D:\Inputdata.xls;

string con = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Inputdata.xls;Extended Properties=""Excel 8.0;HDR=Yes"";"

Excel Connection strings

check

【讨论】:

  • 我使用的是 excel 2010 版本。那么我想更改属性中的任何内容吗?
  • @NithyaIyappan 使用 ACE OLEDB Provider.instead of OLEDB.4.0;..Check I have updated
  • 我使用了 ACE OLEDB Provider。但出现错误为“Microsoft Access 数据库引擎找不到对象 'DATA$'。确保对象存在并且正确拼写其名称和路径名。如果 'DATA$' 不是本地对象,请检查您的网络连接或联系服务器管理员。”
  • @NithyaIyappan 如果我的回答有用,请让我的回答同样有用
【解决方案2】:

此错误通常是由于路径不正确造成的。确保文件路径正确,并且该文件中有 sheet1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多