2012-10-18 2 views
1

통합 문서를 저장하기 전에 Worksheet에서 CellArea를 삭제하고 있습니다. ClearContents, DeleteRange, ClearRange를 사용했습니다. 그러나 "지정된 인수가 유효한 값 범위를 벗어났습니다."오류가 계속 발생합니다.셀 범위 삭제 후 Aspose 도구를 사용하여 통합 문서를 저장하는 동안 오류가 발생했습니다.

foreach (GcmTemplateWorksheets _worksheet in Worksheetdetails) 
     { 
      if (_worksheet.IsTransposeRequired ?? false) 
      { 
       Range maxRange = _workbook.Worksheets[_worksheet.WorksheetName].Cells.MaxDisplayRange; 
       _workbook.Worksheets[_worksheet.WorksheetName].Cells.ClearRange((int)_worksheet.StartRow, (int)_worksheet.StartColumn, maxRange.RowCount, maxRange.ColumnCount); 
      } 
      _workbook.Worksheets[_worksheet.WorksheetName].Cells.ImportDataTable(data_.Tables[_worksheet.FixedWorksheetName], false, _worksheet.ExportDataStartRow ?? 0, 0); 
      //Instantiate the error checking options 
      ErrorCheckOptionCollection opts = _workbook.Worksheets[_worksheet.WorksheetName].ErrorCheckOptions; 
      int index = opts.Add(); 
      ErrorCheckOption opt = opts[index]; 
      //Disable the numbers stored as text option 
      opt.SetErrorCheck(ErrorCheckType.TextNumber, false); 
      opt.AddRange(CellArea.CreateCellArea(0, 0, _workbook.Worksheets[_worksheet.WorksheetName].Cells.MaxDataRow, _workbook.Worksheets[_worksheet.WorksheetName].Cells.MaxDataColumn)); 
     } 
      string _exportPath = System.Configuration.ConfigurationManager.AppSettings["ExportTemplatePath"].ToString(); 
     //Save the worksheet at an appropriate configured location and assign path to _exportPath.. 
     _workbook.Save(_exportPath); 
     return _exportPath; 

답변

2

나는이 시나리오를 테스트 한 내 테스트 기간 동안, 나는 업데이트했다 : 그러나 나는 그것이 fine..KIndly 제안 작품, 삭제 코드를 제거하고 저장하려고하면 .. 내 코드는 다음과 같이 간다 귀하의 코드에 따라 조금 (일부 개체/포인터 또는 다른 값에 대해 확실하지 않은 다른 옵션이 있습니다. 그래서, 나는 더미 DataTable 및 다른 개체/값을 그에 따라) 자신의 경우 테스트하려면 사용해야합니다. 내 샘플 입력 파일 (Book1.xlsx)을 최신 버전/수정본 : Aspose.Cells for .NET v7.3.2.5과 함께 사용하고 내 관찰에 따라 절대적으로 잘 작동합니다. 나는 어떤 문제도 발견하지 못했다.

샘플 코드 : 여기

이 v7.3.2.5 내 완전한 실행 가능한 예제 코드 (그것을 시도하는 사용자를 추천하십시오)입니다 참고로

DataTable dt = new DataTable(); 
dt.Columns.Add("Column1", typeof(int)); 
dt.Columns.Add("Column2", typeof(string)); 
dt.Columns.Add("Column3", typeof(int)); 
for (int i = 0; i < 100; i++) 
{ 
    dt.Rows.Add(i/10 + 1, "Item " + i.ToString(), i); 
} 
Workbook _workbook = new Workbook(@"e:\test2\book1.xlsx"); 
Worksheet _worksheet = _workbook.Worksheets[0]; 
Range maxRange = _workbook.Worksheets[_worksheet.Name].Cells.MaxDisplayRange; 
//workbook.Worksheets[_worksheet.WorksheetName].Cells.ClearRange((int)_worksheet.StartRow, (int)_worksheet.StartColumn, maxRange.RowCount, maxRange.ColumnCount); 
_workbook.Worksheets[_worksheet.Name].Cells.ClearRange((int)maxRange.FirstRow, (int)maxRange.FirstColumn, maxRange.RowCount, maxRange.ColumnCount); 
//workbook.Worksheets[_worksheet.WorksheetName].Cells.ImportDataTable(data.Tables[_worksheet.FixedWorksheetName], false, _worksheet.ExportDataStartRow ?? 0, 0) 
_workbook.Worksheets[_worksheet.Name].Cells.ImportDataTable(dt, false, 0, 0); 
//Instantiate the error checking options 
ErrorCheckOptionCollection opts = _workbook.Worksheets[_worksheet.Name].ErrorCheckOptions; 

int index = opts.Add(); 
ErrorCheckOption opt = opts[index]; 
//Disable the numbers stored as text option 
opt.SetErrorCheck(ErrorCheckType.TextNumber, false); 
opt.AddRange(CellArea.CreateCellArea(0, 0, _workbook.Worksheets[_worksheet.Name].Cells.MaxDataRow, _workbook.Worksheets[_worksheet.Name].Cells.MaxDataColumn)); 
string _exportPath = @"e:\test2\ouput_book1.xlsx"; 
//Save the worksheet at an appropriate configured location and assign path to _exportPath.. 
_workbook.Save(_exportPath); 

, 또한이 리소스 파일 (Book1.xlsx, ouput_book1.xlsx)을 첨부했습니다. 최신 릴리스에서 여전히 문제가 발생하는 경우 실행 가능한 코드/콘솔 응용 프로그램을 공유해 주실 수 있습니까? (우리는 동적 데이터 테이블을 동적으로 사용할 수 있습니다.) 우리의 문제를 재현 할 수 있습니다. Aspose.Cells product support forum에 쿼리를 게시 할 수도 있습니다.

+0

당신의 생생한 응답 주셔서 감사합니다 ... 나는 어떻게 든 통합 매개 변수를 저장하지 못하게하는 ClearRange 메서드에 잘못된 매개 변수를 전달했다는 것을 알아 냈습니다. –