確かに発生しますね。
色々、調べてみたのですがこれといった回避策が見つからないのと仕様なのかどうかも見つけれませんでした。
私なりの回避策としては
■方法1
リフレクションを使って無理やり値を取得
C#
1private static string GetRawCellValue(IXLCell cell) {
2
3 var field = cell.GetType().GetField("_cellValue",
4 System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
5
6 return field.GetValue(cell) as string;
7
8}
かなり無理やりです...
どこにも保証はないので正直、推奨はしません。
※クイックウォッチで元の値がないか調べてたどり着いた程度です
■方法2
バージョンダウン
質問者さんがClosedXmlのバージョンを書いてないのでわかりませんが0.96より低いバージョンだと思います。
※0.96だとRichTextプロパティが無くなってGetRichTextメソッドを使用するようです。
そこでvsのnugetに表示されてる一番古いバージョン(0.64)にしたところ、"あいうえお"は取得できました。
この方法なら今使ってるバージョンにより近いバージョンで探してみるといった感じです。
ただ、バージョンを落とすことになるので古いバグ等が復帰してしまいます。
どちらにしろ0.96でも0.64でも質問者さんの内容からすると曜日の日本語表記だと思いますが、セルに日付として正しい値を設定してもValueプロパティやRichTextから書式設定された値は取得できませんでした。
そのあたりを考え、ユーザー書式を「ddd」にすると曜日も"あいうえお"も正しく取得できました。
そうなると「aaa」という書式が日本語独自という扱いで、ClosedXml側に何らかの書式設定系の追加実装を行わないと無理なのかもしれません。
※そこまで調べる元気がなくなりました...
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2022/07/07 23:01