当前位置: 首页 > 知识库问答 >
问题:

删除单元格区域后使用Aspose工具保存工作簿时出错

宗政权
2023-03-14

在保存工作簿之前,我要删除工作表中的一个CellArea(我已经使用了ClearContents、DeleteRange和ClearRange)。但它总是给出一个错误“指定的参数超出了有效值的范围”。但是,如果我删除了删除代码,并尝试保存它,它工作良好…善意的建议…我的代码是这样的:

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;

共有1个答案

谭骏
2023-03-14

我已经测试了这个场景,在测试过程中,我必须相应地更新您的代码(因为有些对象/指针或其他选项我不确定它们的值。所以,我必须使用一个虚拟的DataTable和相应的其他对象/值),使用我们最新版本/fix:aspose.cells.NET V7.3.2.5的示例输入文件(Book1.xlsx)来测试他的情况,根据我的观察,它工作得非常好。我没有发现任何问题。

下面是我用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产品支持论坛中发布查询。

 类似资料:
  • 当将许多Excel文件与aspose组合在一起时,我得到的是单个工作簿(包含许多工作表的Excel文件)。但问题是我没有得到HTML样式(颜色,字体,大小背景颜色...)合并前的每个工作表中都有。 下面是我的java代码: 我不知道是否有一个选项使aspose在组合工作簿时考虑到样式?

  • 我对VBA相当陌生,请放心。我试图设置一种方法,从一个单元格区域(总是相同的)获取数据,并将这些数据输入到现有的主工作簿中。 null

  • 我有一段巧妙的代码,它根据指定单元格中的特定文本输入隐藏/隐藏表。在Book1中的Sheet1中(比方说),如果我改变单元格A1中的文本(比方说文本是苹果、橘子等),我会在同一本书中的sheet2上得到某些表格(让我们称之为答题卡)。 现在,在另一本书中,我有一个表,其中包含所有可能的文本值(Apple,oranges,等等)。我想写一个代码,首先通过这个表,使值在book1.sheet1(“sh

  • 我正在尝试使用最新版本的ApachePOI(4.1.2)将单元格从一个工作簿复制到另一个工作簿。 如果两个工作簿都是.xlsx文件,则一切正常。但是,如果源工作簿是一个(旧的).xls文件,而目标工作簿是一个.xlsx文件,则以下代码将失败 引发的异常是: java.lang.IllegalArgumentException:只能从一个XSSFCellStyle克隆到另一个,不能在HSSFCell