【Aspose.Cell】エクセル上に配置したテキストオブジェクトの文字列置換

エクセル上に配置したテキストオブジェクトの文字列置換ですが、
Shape.setTextを使って行うという認識で合っていますか?

その場合、添付したsample.xlsxに対して、
abc → ABC と置換した場合、
書式がすべて同じものになってしまいます。

置換結果のエクセルも添付します。after.xlsx

書式をそのままで、文字列だけ置換できないでしょうか?Desktop.zip (16.5 KB)

@KazukiEndou,

テンプレートファイルをありがとう。

テンプレートファイルを使用して、おっしゃるように問題を再現することができます。 次のサンプルコードを使用して、TextBoxシェイプの文字列/テキストを置き換えようとしました。これは機能しますが、フォーマットが文字列全体に不必要に適用されます。
例えば
サンプルコード:

Workbook workbook = new Workbook("f:\\files\\sample.xlsx");
Worksheet worksheet = workbook.getWorksheets().get(0);
com.aspose.cells.Shape shape = worksheet.getShapes().get(0);
shape.setText(shape.getText().replace("abc", "ABC"));
workbook.save("f:\\files\\out1.xlsx");

問題のIDが「CELLSJAVA-44789」のチケットを記録しました。 すぐに調べます。

更新があり次第、お知らせします。

@KazukiEndou
お返事にお時間がかかり申し訳ありません。
図形全体のテキストを設定するには、現在の操作方法はすべてのテキスト レコードを削除してテキストを追加し直すため、対応する古いフォント情報も失われます。
メソッドを使用してください
Workbook workbook = new Workbook(dir +“sample.xlsx”);
Worksheet worksheet = workbook.getWorksheets().get(0);
com.aspose.cells.Shape shape = worksheet.getShapes().get(0);
int index = shape.getText().indexOf(“abc”);
shape.getTextBody().replace(index, 3, “ABC”);
workbook.save(dir +“dest.xlsx”);

shape.getTextBody()replace(string, string) メソッドを追加します

The issues you have found earlier (filed as CELLSJAVA-44789) have been fixed in this update. This message was posted using Bugs notification tool by Peyton.Xu