删除单元格区域后,使用Aspose工具保存工作簿时出错
在保存工作簿之前,我正在删除工作表中的一个CellArea(我已经使用了ClearContents,DeleteRange,ClearRange)。 但它一直给出一个错误“ 指定的参数超出了有效值的范围 ”。 但是,如果我删除了删除代码,并尝试保存,它工作正常..KIndlybuild议..我的代码是这样的:
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;
我已经testing了这个场景,在testing期间,我不得不相应地更新你的代码( 因为有一些对象/指针或者其他的选项我不确定它们的值,所以我必须使用一个虚拟DataTable其他对象/值相应为它 )来testing他的情况下使用我们的示例input文件(Book1.xlsx)与我们的最新版本/修复: Aspose.Cells为.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 )。 如果您仍然面临最新版本的任何问题,您可以共享一个可运行的代码/控制台应用程序(他也可以dynamic地使用一些虚拟的数据表)来重现我们的问题。 您也可以在Aspose.Cells产品支持论坛中发布查询。