[英]Which way to read a cell from Excel using C#?
如果我们想在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";
1.用法是指第一个工作表的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仅适用于该文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.