2012-10-18 39 views
1

在保存工作簿之前,我正在刪除工作表中的CellArea(我已經使用了ClearContents,DeleteRange,ClearRange)。但它一直給出錯誤「指定的參數超出了有效值的範圍。」 但是如果我刪除刪除代碼,並嘗試將其保存,它的工作原理fine..KIndly推薦.. 我的代碼是這樣的:在刪除單元格區域後使用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

我已經測試過這種情況,我的測試過程中,我不得不更新你的代碼有點相應(,因爲有一些對象/指針或其他選項,我不知道它們的值,所以,我必須使用一個虛擬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方法這是使工作簿在最後救不了.. –

相關問題