如果我们想要读取或写入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中都很好?
这两种方式非常不同。
srcWorkSheet.Cells[1, 1].value2 = "foo bar";
A1
单元格。srcRange.Cells[2, 2].Value2 = "foo bar";
UsedRange
的2.行,2列上的单元格。如果Excel中的UsedRange
是B2:D5
,那么它会将价值放在C3
:Range
的变量作为Range
类真的不是一个好主意。 WorkSheet
和WorkBook
也是如此。任何一个选项都可以使用,但只要您必须修改工作表的布局,它们就会变得混乱。
如果是一个选项,我想添加命名范围。如果您使用的模板可以修改工作簿的“开始”状态,则此方法尤其有用。
假设您有一系列列,其中一列包含“foo”值。您可以将“fooColumn”等名称添加到整列或列中的顶部单元格。
然后您可以使用获取列号
worksheet.Range("fooColumn").Column
如果您在工作表上移动元素,则可以保护您不必在整个地方手动编辑列号或行号。
而其他人所说的,使用EPPlus而不是Interop。您仍然可以使用命名范围。但是EPPlus是好的,当COM对象没有被释放时,Interop会带来各种各样的痛苦。 Interop自动化操作文件的应用程序。 EPPlus只适用于该文件。