[Aspose.Cells] 範囲コピーで線オブジェクトがコピーされない

Aspose.Cells for .NET(v26.1.0)を利用しています。

範囲コピーで線オブジェクトがコピーされません。

詳細は以下の添付ファイルをご確認ください。
線オブジェクトがコピーされない.zip (63.3 KB)

添付ファイル内の「検証結果.docx」をご確認ください。

@kawamura.any.one.jp

ご報告のとおり、Aspose.Cells for .NET (v26.1.0) の Range.Copy はセルの内容と書式のみを対象とし、線(描画オブジェクト)はコピーされません [8]。

対策(ワークアラウンド)

  1. セルデータだけをコピー
    Range.CopyData または Range.CopyValue を使用すると、描画オブジェクトを含めずにセルのデータだけをコピーできます [8]。
  2. 描画オブジェクトを一時的に非表示にしてコピー
    コピー前に対象の線オブジェクトの Shape.IsVisible = false に設定し、コピー後に再度表示させる方法があります [8]。

上記で解決しない場合は、再現用の最小サンプル(コードと対象ブック)をご提供いただければ、こちらで詳細に調査いたします。ご不明点があればこのスレッドでお知らせください。

は、内部問題追跡システムで次の新しい問題をオープンし、[無償サポートポリシー]に記載されている条件に従って修正を提供しています(Free Support Policies).
リリースID:CELLSNET-59802
[有料サポートサービス] (https://helpdesk.aspose.com/) 優先的なサポートが必要な場合、およびデルの有料サポート管理チームに直接アクセスする必要があります。

@kawamura.any.one.jp
2本の横線はすべてshapeで、
PasteType=PasteType.Formatsの場合、shapeはコピーされるべきではありません。Aspose.CellsとExcelの表現は一致しています。
グラフィックをコピーする場合:
destRange.Copy(sourceRange, new PasteOptions() { });

返信ありがとうございます。

destRange.Copy(sourceRange, new PasteOptions() { PasteType = PasteType.Formats });
このコードは、エクセルInteropを使用しているときにセルの高さが反映されずShapeの位置がおかしくなったことがあったために入れていたコードをAspose向けに変更したものです。

sheet.Cells.CopyRows(wb.Worksheets[“原本”].Cells, 0, 10, 10);
このコードでShapeの楕円はコピーされていますが、線はコピーされません。

@kawamura.any.one.jp
ありがとうございます。はい、コピーラインはありません。
CELLSNET-59802を再オープンしました
できるだけ早く修復します。

1 Like

@kawamura.any.one.jp
CopyRowsのバグを修正しました

Range sourceRange = wb.Worksheets["原本"].Cells.CreateRange("1:10");
 Range destRange = sheet.Cells.CreateRange("11:20");
 destRange.Copy(sourceRange, new PasteOptions() { PasteType = PasteType.Formats });
 sheet.Cells.CopyRows(wb.Worksheets["原本"].Cells, 0, 10, 10);

結果:
dest (3).zip (16.5 KB)
しかし、なぜ同じ領域を2回コピーするのですか?

Excel.Interopを使用していたときにうまく反映しなかったときのコードを移植して書き換えたためと思います。
destRange.Copyはなくても問題ないようなので削除したいと思います。

@kawamura.any.one.jp
はい、行全体をコピーする場合は、CopyRowsだけです。
もし何か問題が見つかったら、いつでも私たちに連絡してください。