We're sorry Aspose doesn't work properply without JavaScript enabled.

Free Support Forum - aspose.com

【Aspose.Cells for .NET】FIND関数が正しく動作しない(22.8.0.0)

Aspose.cells8.7.1.0⇒22.8.0.0へ移行し、既存プログラムの
マイグレーションをしています。
「**」前方一致のセル値(例:**Date)をFind関数で見つける以下の処理があります。
~~
Dim op As New FindOptions()
op.LookInType = LookInType.Values
op.LookAtType = LookAtType.StartWith
Dim c As Cell = Nothing
For Each sheets As Worksheet In book.Worksheets
While True
c = sheets.Cells.Find("**", c, op)
~~
8.7.1.0では、「**」前方一致の値のみcに取り出せていましたが、
22.8.0.0では、「**」をワイルドカードと認識してしまうらしく、
「**」以外の普通の文字列値や、数式が入っているセルもcに拾ってしまいます。
他のFindOptionsも試しましたが、うまくいきません。
8.7.1.0と同じ動作にしたいのですが、どうしたらよいでしょうか。
※「**」:*は半角です。
(半角の*文字が正しく反映しなかったので全角にしてあります)

@oba8684,

違いがある場合は、コードで FindOptions.RegexKey 属性を「false」に設定してみてください。

op.RegexKey = False

それでも問題が見つかった場合は、テンプレートの Excel ファイルと、スプレッドシートでのみ抽出する値を示すスクリーンショットをいくつか共有してください。 すぐに問題を確認いたします。

帳票.7z (270.4 KB)

@Amjad_Sahi
返信ありがとうございました。

>違いがある場合は、コードで FindOptions.RegexKey 属性を「false」に設定してみてください。
>op.RegexKey = False

設定してみましたが、現象は変わりませんでした。
テンプレートファイルと、
7.8.1.0と22.8.0.0での出力ファイル、
不具合の解説資料を添付しましたので、ご確認お願いいたします。

@oba8684,

サンプルファイルありがとうございます。

問題を正確に評価し、(スクリーンショットに従って) 正確な違いを比較するには、2 つのスタンドアロン サンプル コンソール VS.NET アプリが必要です。 1 つは古いバージョン (7.8.1.0) で、もう 1 つは新しいバージョン (22.8.0.0) です。 したがって、両方のプロジェクトを作成して提供し、プロジェクトを圧縮して共有します。 すぐに問題を調査します。

あなたの問題をさらに評価しました。 「*」は MS Excel ではワイルドカードとして扱われることに注意してください。 したがって、この動作を望まない場合は、~*~* を使用して ** 自体を表す必要があります。
例えば。、

c = sheet.Cells.Find(" ", c, op)

に:

c = sheet.Cells.Find("~*~*", c, op)

参考までに、「*Date」は「abcDate」、「123Date」、「**Date」などの日付に一致しますが、「~*~*Date」は「*Date」のみに一致します。

@Amjad_Sahi
早速の回答、返信ありがとうございました。

>「*」は MS Excel ではワイルドカードとして扱われることに注意してください。

7.8.1.0から22.8までのどこかのタイミングで、「*」はワイルドカードと
して取り扱うようになったということで承知いたしました。

>c = sheet.Cells.Find("~ * ~ *", c, op)

修正案をいただきありがとうございました。テンプレートの「* *」を「**」に修正する方針になりましたので、以下のように対処することで正常動作するようになりました。
①頭に「**」(半角)をつけているセルは頭に「**」(全角)をつけるようにテンプレートを修正
②ソースコードの判定は「**」(全角)で判定
(例)c = sheet.Cells.Find("**", c, op)

本件はクローズとさせていただきます。
ありがとうございました。

@oba8684,

ご意見をいただきありがとうございます。

これで問題は解決したようです。 さらにご質問やご意見がございましたら、お気軽にお寄せください。