1

ワークブックを保存する前に、ワークシートの 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;
4

1 に答える 1

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.xlsxouput_book1.xlsx )も添付しました。それでも最新リリースで問題が発生する場合は、実行可能なコード/コンソールアプリケーションを共有して(ダミーのデータテーブルを動的に使用する場合もあります)、問題を再現してください。Aspose.Cells製品サポートフォーラムにクエリを投稿することもできます。

于 2012-10-23T14:15:11.123 に答える