C#Excel生成 - 范围使用最后一个单元格作为正确数据的第一个单元格复制(不需要的行为)
问题描述:
List<someClass> aList = new List<someClass>();
...
XLWorkbook workbook = new XLWorkbook();
IXLWorksheet worksheet = workbook.AddWorksheet("Data");
worksheet.Hide();
workbook.CalculateMode = XLCalculateMode.Manual;
var data = aList.ToArray();
var firstCell = worksheet.Cell(1, 1);
var lastCell = worksheet.Cell(numRows, numColumns); // numRows = 150, numColumns = 8
var writeRange = worksheet.Range(firstCell, lastCell); //firstCell = A1, LastCell = H150
writeRange.Value = data;
workbook.SaveAs(mySavePath);
这段代码意味着将aList中的数据复制到新的excel文档中,而不是从单元格开始A1(1,1)并结束于单元格H150,它将单元格1中的值复制到A1和H299之间的所有单元格中,第1行中的行值从第1-150行中的HO列开始,最后我的输入值正确分组数据来自H150-O299。C#Excel生成 - 范围使用最后一个单元格作为正确数据的第一个单元格复制(不需要的行为)
基本上,我的数据从范围的偏移量开始,而不是填入范围内,并且该范围上方和左侧的所有内容都是默认复制(垃圾)数据。 someClass只是一个公共类,包含用于整数和字符串的公共字段。
任何人都可以告诉我为什么会发生这种情况,我该如何纠正它?
答
作为一种解决方案,我发现为第一个和最后一个单元格使用相同的索引将正确输入我的数据,但是为什么Range不起作用,因为(假设)意图尚未得到解答。
var firstCell = worksheet.Cell(1, 1);
var writeRange = worksheet.Range(firstCell, firstCell); //firstCell = A1, LastCell = H150
这将按预期工作。我已经完全删除lastCell,因为它是不必要的。