お世話になっております。
「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
经过我们の深層な研究で、日文字符の全角と半角の変換についての情報を得た。私たちは、一部の文字のサポートを達成することが可能であると考えています(これには、あなたが提供したサンプルファイルで使用されている文字も含まれます)。私たちの実装は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) に含まれます。次のバージョンがリリースされたらお知らせします