导入 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#函数选择任意两列并将它们逐个单元格添加并粘贴到其他列中