使用C#从Excel读取单元格的方法是什么?

问题描述 投票:2回答:2

如果我们想要读取或写入excel中的单元格,我发现了人们使用的两种方式。

宣言:

Excel.Application ExcelApp = new Excel.Application();
Excel.Workbook srcWorkBook = ExcelApp.Workbooks.Open(@"C:\test.xls");
Excel.Worksheet srcWorkSheet = srcWorkBook.Worksheets[1];
Excel.Range srcRange = srcWorkSheet.UsedRange;

用法1:

srcWorkSheet.Cells[1, 1].value2 = "foo bar";

用法2:

srcRange.Cells[2, 2].Value2 = "foo bar";

哪一个是最好的使用方式?或者它在.NET中都很好?

c# excel excel-interop
2个回答
5
投票

这两种方式非常不同。

srcWorkSheet.Cells[1, 1].value2 = "foo bar";

srcRange.Cells[2, 2].Value2 = "foo bar";
  • 2.用法采用UsedRange的2.行,2列上的单元格。如果Excel中的UsedRangeB2:D5,那么它会将价值放在C3

enter image description here


  • 有一个名为Range的变量作为Range类真的不是一个好主意。 WorkSheetWorkBook也是如此。

1
投票

任何一个选项都可以使用,但只要您必须修改工作表的布局,它们就会变得混乱。

如果是一个选项,我想添加命名范围。如果您使用的模板可以修改工作簿的“开始”状态,则此方法尤其有用。

假设您有一系列列,其中一列包含“foo”值。您可以将“fooColumn”等名称添加到整列或列中的顶部单元格。

然后您可以使用获取列号

worksheet.Range("fooColumn").Column

如果您在工作表上移动元素,则可以保护您不必在整个地方手动编辑列号或行号。


而其他人所说的,使用EPPlus而不是Interop。您仍然可以使用命名范围。但是EPPlus是好的,当COM对象没有被释放时,Interop会带来各种各样的痛苦。 Interop自动化操作文件的应用程序。 EPPlus只适用于该文件。

© www.soinside.com 2019 - 2024. All rights reserved.