2017-11-10 11 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에서 행 150까지의 열 HO에 있어야하며 마지막으로 올바르게 입력해야합니다 H150-O299의 그룹화 된 데이터올바른 데이터의 첫 번째 셀로 마지막 셀을 사용하는 Excel 생성 - 범위 복사 (바람직하지 않은 동작)

기본적으로 내 데이터는 범위를 채우는 대신 범위의 오프셋에서 시작하며 그 범위의 위와 왼쪽의 모든 항목은 기본 복사 된 (가비지) 데이터입니다. someClass는 int 및 문자열에 대한 공용 필드가있는 공용 클래스입니다.

아무도 왜 이런 일이 발생하고 어떻게 해결할 수 있습니까?

답변

0

해결 방안으로 첫 번째 셀과 마지막 셀에 동일한 인덱스를 사용하면 데이터가 올바르게 입력되지만 범위가 의도 된대로 작동하지 않는 이유는 아직 해결되지 않았습니다.

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

의도 한대로 작동합니다. lastCell은 불필요하므로 완전히 제거했습니다.