Excel IndexOutOfRange with .NET Core



根据示例 https://github.com/dotnet/samples/tree/master/core/extensions/ExcelDemo 我可以让Excel互操作在.NET Core 3.1中工作(是的,我意识到Excel并不完全是跨平台的,但请耐心等待(。 以下代码在面向 .NET Framework 4.7.2 时运行良好,但在 .NET Core 上,最后一行以 IndexOutOfRangeException "Index 超出数组边界"而炸毁。

Excel.Application excel;
Excel.Workbook workbook;
Excel.Worksheet sheet;
Excel.Range range;
// Start Excel and get Application object.
excel = new Excel.Application();
excel.Visible = true;
// Get a new workbook.
workbook = excel.Workbooks.Add(Missing.Value);
sheet = (Excel.Worksheet)workbook.ActiveSheet;
range = sheet.Range[sheet.Cells[1, 1], sheet.Cells[1, 4]];  //this works fine with .NET Framework but not Core

我尝试广泛移植的旧代码设置了这样的变量范围,否则我只会使用绝对电子表格样式索引,例如"A1:D1",这似乎在 .NET Core 中工作正常。 我试过设置 excel。ReferenceStyle = Excel.XlReferenceStyle.xlR1C1 以及 sheet.get_Range(,( 而不是工作表的排列。范围[,],但我仍然得到同样的越界问题,尽管它是一个有效的范围。 任何想法如何让范围调用在.NET Core中工作?

解决方法在这里,尽管我不知道为什么:

你可以像下面这样打电话

Excel.Range oCell1 = sheet.Cells[1, 1];
Excel.Range oCell2 = sheet.Cells[1, 4];
range = sheet.Range[oCell1, oCell2];

范围 = 工作表。范围[(Excel.范围(表。单元格[1, 1], (Excel.Range(表。细胞[1, 4]];

最新更新