Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要一个解决方案从C#中的Excel中检索数据,而无HRESULT:0x800A03EC异常_C#_.net_Excel_Com Interop - Fatal编程技术网

需要一个解决方案从C#中的Excel中检索数据,而无HRESULT:0x800A03EC异常

需要一个解决方案从C#中的Excel中检索数据,而无HRESULT:0x800A03EC异常,c#,.net,excel,com-interop,C#,.net,Excel,Com Interop,我需要从Excel文件中检索数据并将数据插入数据库。我现在正试图检索数据,但我一直收到一个HRESULT:0x800A03EC异常错误 我的代码: public void ReadFile() { try { Excel.Application ep = new Excel.Application(); Excel.Workbook ewb = ep.Workboo

我需要从Excel文件中检索数据并将数据插入数据库。我现在正试图检索数据,但我一直收到一个HRESULT:0x800A03EC异常错误

我的代码:

  public void ReadFile()
        {
            try
            {
                Excel.Application ep = new Excel.Application();
                Excel.Workbook ewb = ep.Workbooks.Open(@"C:/Temp/Copy of AGCO Transport Schedule.xlsx");
                Excel.Worksheet ews = ewb.Sheets[1];
                Excel.Range range = ews.UsedRange;

                int rowCount = range.Rows.Count;
                int columnCount = range.Columns.Count;

                for (int i = 1; i < rowCount; i++)
                {
                    for (int j = 1; j < columnCount; j++)
                    {
                      string  str = (string)(range.Cells[i, j] as Excel.Range).Value2;
                        Console.WriteLine(str);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("YOLO "+e.Message);
            }
        }
    }
public void ReadExcelFile()
{
    string connectionString = string.Format(ConfigurationManager.ConnectionStrings["ExcelConnection"].ConnectionString.Replace("'", "\""), "@C:/Temp/Copy.xlsx");
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        try
        {
            connection.Open();
            string sqlCmd = "SELECT  * FROM [Ark1$]";
            using (OleDbCommand command = new OleDbCommand(sqlCmd, connection))
            {
                command.CommandType = System.Data.CommandType.Text;
                using (OleDbDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        Console.WriteLine(reader.ToString());
                    }
                }
            }

        }
        catch (Exception exception)
        {
            Console.WriteLine("ERROR in ReadExcelFile() method. Error Message : " + exception.Message);
        }
    }
}

有人能帮我吗?

尝试从两个for循环的1开始循环计数。excel文件的索引从1开始。我想我不是零基索引。

我想补充一点: 你的方法很慢-真的,真的很慢。 要加快速度,您有两种选择: 使用EPPLUS,它是一个快速、免费的excel读/写库。
为了一次性从excel中获取数据,只需将数据从range对象“拉”到一个数组(VB.net中的dim values()=range.value2)中,然后迭代该数组。这比枚举每个单元格要快得多。

您在哪里得到异常,哪一行?错误代码
0x800A03EC
(或-2146827284)表示找不到名称;换句话说,你要求了一些东西,但是Excel找不到。请检查这篇文章:似乎错误是由于Ref:other knowledge-based正确-mot Excel索引从1开始。这是非常令人讨厌的,所以请记住——它会产生很多小虫子。另外,在usedrange.rows.count停止循环,但EPPLUS(以及任何基于OpenXML的库)将只加载Excel 2007文件及以上。旧的.XLS文件不兼容。我记不起互操作库助手的名字了,它让事情变得简单多了……我已经编辑了问题和代码。你能帮我吗?