エクセル上に配置したテキストオブジェクトの文字列置換ですが、
Shape.setTextを使って行うという認識で合っていますか?
その場合、添付したsample.xlsxに対して、
abc → ABC と置換した場合、
書式がすべて同じものになってしまいます。
置換結果のエクセルも添付します。after.xlsx
書式をそのままで、文字列だけ置換できないでしょうか?Desktop.zip (16.5 KB)
エクセル上に配置したテキストオブジェクトの文字列置換ですが、
Shape.setTextを使って行うという認識で合っていますか?
その場合、添付したsample.xlsxに対して、
abc → ABC と置換した場合、
書式がすべて同じものになってしまいます。
置換結果のエクセルも添付します。after.xlsx
書式をそのままで、文字列だけ置換できないでしょうか?Desktop.zip (16.5 KB)
テンプレートファイルをありがとう。
テンプレートファイルを使用して、おっしゃるように問題を再現することができます。 次のサンプルコードを使用して、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