【Aspose.Cells for java】Excel上で設定したASC関数が反映されない

@ika0616

经过我们の深層な研究で、日文字符の全角と半角の変換についての情報を得た。私たちは、一部の文字のサポートを達成することが可能であると考えています(これには、あなたが提供したサンプルファイルで使用されている文字も含まれます)。私たちの実装はICUの実装以上ではありませんが、ICUを使用しなくても現在の要件を満たすことが可能でしょう。対応する機能強化は、我々の次のバージョン(24.4、4月初旬にリリース予定)に含まれます。

@johnson.shi
ありがとうございます。最新バージョンがリリースされたら試してみたいと思います。
よろしくお願いします。

@ika0616
あなたのフィードバックに感謝します。どういたしまして。更新があれば、すぐにお知らせします。

The issues you have found earlier (filed as CELLSJAVA-45906) have been fixed in Aspose.Cells for Java 24.4.

お世話になっております、返信が遅くなり申し訳ありません。

頂いた修正バージョン(24.4)にて試してみましたが、
ASC関数を含むExcelブックを作成するロジックでエラーが発生します。

【処理順番】
①ASC関数を含むセルに対して文字列を挿入
②他の関数を使用するセルに対して値を挿入
③workbook.calculateFormula()を実行してブック全体の数式を再計算する
今回は③の箇所でエラーが発生します。
なおブックにASC関数を含めない場合はエラーは発生しません。
【エラーメッセージ】
com.aspose.cells.CellsException: java.lang.NullPointerException: null(Based on cell Sheet1!D8)
at com.aspose.cells.agq.a(Unknown Source) ~[aspose-cells-24.4.jar!/:na]

お手数ですが原因調査をお願いいたします。

併せて今回使用しているExcelブックを添付します。
プログラム側ではこのブックをテンプレートファイルとして読み込み、
B2~B5、C8~C9のセルに対してプログラム側で文字列を挿入しています。
そのセルを参照する形で、C2~C5、D8~D9のセルでASC関数を使って変換しています。

添付ファイル.zip (7.2 KB)

@ika0616
サンプルファイルを使用して最新バージョンv 24.5でテストすることで、問題を再現することができます。JAPANロケールを使用したASC関数の計算中にNullPointerExceptionが発生していることがわかりました。

内部問題追跡システムで次の新しいチケットを開き、Free Support Policies に記載されている条件に従って修正を提供しています。

質問番号:CELLSJAVA-45990

@John.He
ご確認ありがとうございます。
修正の方をよろしくお願いいたします。

@ika0616
どういたしまして。更新があれば、すぐにお知らせします。

@ika0616,

お客様の問題 (「CELLSJAVA-45990」として記録) が解決されましたのでお知らせいたします。この修正は、今週または来週初めにリリース予定の次のリリース (Aspose.Cells v24.6) に含まれます。次のバージョンがリリースされたらお知らせします

@amjad.sahi

ありがとうございます。修正版のリリースお願いいたします。

@ika0616,

はい、引き続きお知らせいたします。

The issues you have found earlier (filed as CELLSJAVA-45990) have been fixed in Aspose.Cells for Java 24.6.

@amjad.sahi
頂いた最新バージョン(24.6)にて実行したところ、当初のNullPointerExceptionは発生しなくなりましたが、別のエラー(下記参照)が発生します。

エラーの発生個所は前回と同じく「workbook.calculateFormula()」の部分です。

com.aspose.cells.CellsException: java.lang.ArrayIndexOutOfBoundsException: Index 30 out of bounds for length 18(Based on cell 0000000001240000000124061900001!D8)
at com.aspose.cells.agr.a(Unknown Source) ~[aspose-cells-24.6.jar:24.6.0]
at com.aspose.cells.agr.a(Unknown Source) ~[aspose-cells-24.6.jar:24.6.0]
at com.aspose.cells.ags.a(Unknown Source) ~[aspose-cells-24.6.jar:24.6.0]
at com.aspose.cells.ags.b(Unknown Source) ~[aspose-cells-24.6.jar:24.6.0]
at com.aspose.cells.agr.b(Unknown Source) ~[aspose-cells-24.6.jar:24.6.0]
at com.aspose.cells.Workbook.calculateFormula(Unknown Source) ~[aspose-cells-24.6.jar:24.6.0]
at com.aspose.cells.Workbook.calculateFormula(Unknown Source) ~[aspose-cells-24.6.jar:24.6.0]
at jp.co.njc.archon.engine.pdf.editor.SheetEditor.outputBook(SheetEditor.java:2085) ~[main/:na]

なおエラーメッセージの「0000000001240000000124061900001」部分はシート名となり、当該シートのD8セルにてエラーが発生しているようです。サンプルファイルを添付します。

お手数ですが、再度確認をお願いします。

テスト帳票.zip (7.1 KB)

@ika0616
サンプルファイルと次のサンプルコードを使用して最新バージョンv 24.6でテストすることで、正常に動作することができます。
サンプルコードは次の通りです。

Workbook wb = new Workbook(filePath + "僥僗僩挔昜.xlsx");
wb.getSettings().setLocale(Locale.JAPAN);

wb.calculateFormula();

また、次の文を使用して実行中のバージョン番号を印刷してください。

System.out.println(CellsHelper.getVersion());

まだ疑問がある場合は、テストコードを提供してください。すぐにチェックします。

@John.He

頂いたサンプルコードの
wb.getSettings().setLocale(Locale.JAPAN);
を入れて試してみましたが現象が改善されませんでした。

その後調べてみると、セットする文字に濁音・半濁音文字が入っている場合にエラーが起きます。
(例:ガギグゲゴ、パピプペポ)
逆に、濁音・半濁音文字以外では正常に変換されました。

お手数ですが、濁音・半濁音文字をセットして再度調査お願いします。

@ika0616
サンプルファイルに濁音と半濁音の文字を追加し、最新バージョンv 24.6で次のサンプルコードを使用してテストすることで、正常に動作します。添付ファイルを確認してください。result.zip (7.4 KB)

サンプルコードは次の通りです。

Workbook wb = new Workbook(filePath + "僥僗僩挔昜.xlsx");
wb.getSettings().setLocale(Locale.JAPAN);

wb.calculateFormula();

まだ疑問がある場合は、サンプルファイルとテストコードを提供してください。すぐにチェックします。

@John.He

頂いたresult.zipを確認しましたが、B15、B16セルには全角文字がそのままセットされています。そちらで確認して頂いた際には、ASC関数を通して正しく変換されていますでしょうか?
(例)
C8、C9セルに濁音と半濁音の文字をセットすると、D8、D9セルには
ASC関数を使った変換結果が正しくセットされますか?

@ika0616
あなたのフィードバックに感謝します。サンプルファイルと以下のサンプルコードを使用してテストすることで、問題を再現することができます。数式計算を行うと、ArrayIndexOutOfBoundsException例外が発生します。添付ファイルを確認してください。

サンプルコードは次の通りです。

Workbook wb = new Workbook(filePath + "僥僗僩挔昜.xlsx");
wb.getSettings().setLocale(Locale.JAPAN);

wb.calculateFormula();

内部問題追跡システムで次の新しいチケットを開き、Free Support Policies に記載されている条件に従って修正を提供しています。

質問番号:CELLSJAVA-46031

@John.He

確認ありがとうございます。
引続き修正をお願いします。

なお、今後は弊社の別の担当者からも返信させて頂くと思います。
これまでの経緯は別担当者に連携しておきますので、よろしくお願いします。

@ika0616
あなたのフィードバックに感謝します。どういたしまして。更新があれば、すぐにお知らせします。