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正确分组的数据。

基本上,我的数据从范围的偏移量开始,而不是在范围内填充,并且该范围内的所有内容都是默认复制(垃圾)数据。 someClass只是一个公共类和公共字段的整数和string。

谁能告诉我为什么发生这种情况,我该如何纠正?

作为一个解决scheme,我发现使用相同的索引的第一个和最后一个单元格将正确地input我的数据,但是为什么范围不工作,因为(假设)意图尚未得到回答。

 var firstCell = worksheet.Cell(1, 1); var writeRange = worksheet.Range(firstCell, firstCell); //firstCell = A1, LastCell = H150 

这将按预期工作。 我已经完全删除lastCell,因为它是不必要的。