导入 Excel 文件并读取单元格

Posted

技术标签:

【中文标题】导入 Excel 文件并读取单元格【英文标题】:Importing Excel file and reading cells 【发布时间】:2020-08-14 16:36:26 【问题描述】:

我正在尝试导入一个 excel 文件并使用 Visual Studio C# 处理它。当我尝试创建一个 excel 应用程序以便我可以使用它来读取文件时,我在运行代码时收到此错误: "System.IO.FileNotFoundException: '无法加载文件或程序集'office,Version=15.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c'。系统找不到指定的文件。'" 我看到一些人遇到了这个问题,并说了一些关于 excel 2013 的事情,但这里不是这种情况。 有人有解决方案吗?我会很高兴听到这个消息。

【问题讨论】:

检查一下:***.com/questions/32399420/…您可能为 15.0 安装了错误的 Office 或根本没有 Office? 我宁愿使用轻量级库,例如 Npoi 或 Epplus,而不是使用 office。 @Jodn 有没有办法更改office版本?也许 15.0.0.0 不是我需要使用的那个? @itayamit 尝试在 Visual Studio 中的 Reference Manager->COM 中添加对 office 16.0.x 的 COM-Visible 引用。 iirc 15.0 适用于 Office 2010、2013 和 16。是 2016+ @itayamit 和 IMO akd 是对的。您现在为 office 2016 开发,但在您的目标计算机上可能安装了 office2013 并且一切都中断了.. 去 office DLL 独立解决方案。我正在使用github.com/ExcelDataReader/ExcelDataReader 【参考方案1】:

您可能正尝试在没有安装办公室的 PC 上运行该应用程序。在 PC 中安装此特定版本的 office,然后执行该应用程序并重试。

【讨论】:

我安装了office,但事实并非如此。你的意思是使用特定版本的office?我有最新的【参考方案2】:

我实际上做了 akd 所说的,我使用了 Epplus 并且效果很好。非常感谢您的建议!

【讨论】:

【参考方案3】:

1.您可以先安装nuget包Microsoft.Office.Interop.Excel。

2.最好将 Embed Interop Types 设置为 true。

配置:最新版本Microsoft.Office.Interop.Excel、Excel2016

测试代码如下:

 class Program

    static void Main(string[] args)
    
        ReadExcel("D:\\xxx.xlsx");
    
    static void ReadExcel(string path)
    
        Excel.Application app = new Excel.Application();
        Excel.Workbook workbook = app.Workbooks.Open(path);
        Excel.Worksheet worksheet = workbook.Worksheets[1];
        Excel.Range range = worksheet.UsedRange;
        int row = range.Rows.Count;
        int column = range.Columns.Count;
        for (int i = 1; i < column+1; i++)
        
            for (int j = 1; j < row+1; j++)
            
                string value = worksheet.Cells[i][j].Text;
                Console.WriteLine(value);
            
            Console.WriteLine("*********");
        
        Console.ReadKey();

    

Excel:

结果:

【讨论】:

以上是关于导入 Excel 文件并读取单元格的主要内容,如果未能解决你的问题,请参考以下文章

导入excel文件的C#函数选择任意两列并将它们逐个单元格添加并粘贴到其他列中

如何使用java将一个excel单元格分成两个单元格

Java中开发POI读取导入Excel文件及验证

通过 VBA 将查询从 Access 导入 Excel 并删除单个单元格

Java-poi-excel-对空值单元格的读取

Python实现读取Excel指定单元格并重新写入已存在的Excel指定的单元格