2017-11-10 3 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内のデータをaList内のデータを新しいExcelドキュメントにコピーすることを目的としていますA1(1,1)で始まり、セルH150で終了すると、セル1の値をA1とH299の間のすべてのセルにコピーします.1行目の列値は1行目から110行目まで、 H150-O299からのグループ化されたデータ。正しいデータの最初のセルとして最後のセルを使用するExcelの生成 - 範囲コピー(望ましくない動作)

基本的に、私のデータは範囲を埋めるのではなく範囲のオフセットから始まり、その範囲の上と下のすべてがデフォルトのコピー(ゴミ)データです。 someClassは、intと文字列のパブリックフィールドを持つパブリッククラスです。

誰も私にこれがなぜ起こっているのか、どのように修正できるのか教えていただけますか?

答えて

0

解決策として、最初と最後のセルに同じインデックスを使用するとデータが正しく入力されることがわかりましたが、Rangeが意図したとおりに動作しない理由はまだ解明されていません。

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

これは意図したとおりに動作します。 lastCellは完全に削除されているので、不要です。

関連する問題