2017-11-10 190 views
1
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只是一個公共類,包含用於整數和字符串的公共字段。

任何人都可以告訴我爲什麼會發生這種情況,我該如何糾正它?

回答

0

作爲一種解決方案,我發現爲第一個和最後一個單元格使用相同的索引將正確輸入我的數據,但是爲什麼Range不起作用,因爲(假設)意圖尚未得到解答。

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

這將按預期工作。我已經完全刪除lastCell,因爲它是不必要的。

相關問題