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

お世話になっております。

「aspose-cells-22.2」を使ってExcelファイルの出力を行っています。
特定セルに対して「ASC関数」を使っていますが、
出力されたファイルを開いても半角カナに変換されません。
※プログラム中では、セルに値をセットした後で「calculateFormula()」メソッドを実行しています。

以下のマニュアルを見ると、ASC関数はサポートされていると思っています。

上記関数が適用されない原因はありますか?

実際にAsposeから出力されたファイルを添付します。ご確認お願いします。
(添付ファイルでは、B列に文字列をセットし、C列でASC関数を記述しています。)
出力ファイル.zip (7.1 KB)

@ika0616,

最新バージョン/修正 Aspose.Cells for .NET v24.3 を使用してシナリオ/ケースをテストしました。 提供されたファイルと以下のサンプルコードを使用してテストしたところ、正常に動作しました。

Workbook workbook = new Workbook ("f:\\files\\Åoù-âtâ@âCâï.xlsx");
workbook.calculateFormula();
workbook.save("f:\\files\\out1.xlsx");
workbook.save("f:\\files\\out12.pdf");

出力された XLSX および PDF ファイルを参照用に添付してください。
files1.zip (13.4 KB)

出力ファイルの結果に問題はありますか? その場合は、サンプル コードと出力 XLSX および PDF ファイルを提供してください。 また、セルに必要な ASC 式をそのまま含む XLSX ファイルも共有してください。 すぐに問題を調査させていただきます。

@amjad.sahi
確認ありがとうございます。

今回サンプルコードで正常に動作したとの事ですが、
頂いたout1.xlsx、out12.pdfを見ると、全角文字が半角文字に変換されていません。
こちらで期待する値は以下になります。
(変換前)江口 テスト1 → (変換後)江口 テスト1

プログラムロジックでは、C列にASC関数を設定した状態で、B列に値を埋め込んでいます。
その後「workbook.calculateFormula();」をしていますが、出力されるxlsx及びPDFファイルでは
半角文字に変換されていません。

上記踏まえて、再度ご確認お願いします。

@ika0616
サンプルファイルを使用して最新バージョンv 24.3でテストすることで、問題を再現することができます。ファイルをpdfに変換した後も、全角文字は半角文字に変更されていません。

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

質問番号: CELLSJAVA-45906

@John.He
返信ありがとうございます。

そうしますと状況としては、そちらでも現象は再現し、

の条件に従って順次修正バージョンがリリースされると言う理解で良いですか?

また、修正時期は現段階では未定でしょうか?

@ika0616
あなたのフィードバックに感謝します。あなたの質問書が作成されたばかりなので、評価問題を分析する時間をください。更新があれば、すぐにお知らせします。サポートポリシーについては、有料サービスを購入した優先度の高い質問票が優先的に解決され、解決後すぐにfixバージョンを得ることができます。有料サービスを購入していない問題のリストは、解決後にreleaseバージョンに従ってリリースされます。

@ika0616

私たちの実験によると、現在のところ、JDKの既存の機能を使用して全角文字を半角文字に正しく変換することはできないことがわかりました。したがって、提供されたサンプルファイルの式(ASC関数)に対しては、期待する結果を出すことができません。しかし、テストを行った結果、IBMのICU4Jライブラリはこの機能を正確に実装できることがわかりました。したがって、解決策として、このライブラリを使用して式計算エンジンを実装し、期待する結果を得ることができると考えます。サンプルコードは以下の通りです:

        CalculationOptions copts = new CalculationOptions();
        copts.setCustomEngine(new AbstractCalculationEngine() {
            public void calculate(CalculationData data)
            {
                if(data.getFunctionName().equals("ASC"))
                {
                    data.setCalculatedValue(com.ibm.icu.text.Transliterator.getInstance("Fullwidth-Halfwidth").transliterate(data.getParamValue(0).toString()));
                }
            }
            public boolean getProcessBuiltInFunctions() { return true; }
        });
        Workbook workbook = new Workbook(...);
        workbook.calculateFormula();
        ...

@johnson.shi
解決策のご提示ありがとうございます。

頂いた方法はこちらでも試してみようと思いますが、
それとは別に、aspose側としては時期は未定ながらも
今後バージョンアップ等で標準対応をする予定などはありますでしょうか?

@ika0616
あなたのフィードバックに感謝します。現在、icuというサードパーティ製ライブラリを含める計画はありません。もしあなたが何か疑問や困惑があれば、いつでも私たちに連絡してください。

@John.He
ありがとうございます。承知しました。
取り急ぎご提案頂いた解決策を検討してみます。

@ika0616,

どういたしまして。

@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.