Excelで書き出すときに、末尾のE+数字が指数に変換される

こんにちは。

Excelの問題かもしれませんが、掲題の現象について回避できる方法がないかお聞きしたいのでこちらに投稿させていただきます。

【やりたいこと】※例です。

下図のような表をExcelから読み取ります。
(Excel Application ScopeとRead rangeを使用)

Example

IDというカラムは数字とアルファベットを含みます。
例のようにアルファベットの位置・数ともに規則性はありません。
また、数字のみでアルファベットを含まない場合もあります。

読み取った後、表を加工(ソートやカラムの追加)し、別のExcelファイルとして保存します。

【問題】
図の最終行、元のデータに”500E5”のように末尾がE+(数字)となるデータが含まれていた場合に問題が発生しました。

作成したExcelを開くと、上述の部分が5.00E+07と表示されます。
数式バーには50000000と表示されており、書式設定を変更しても”500E5”と表示させることができません。

Example2

【検証したこと】
Read RangeのPreserve Formatプロパティを変更。
効果なし。Excelファイル出力前にテーブルの中身をWrite lineなどでみるときちんと"500E5"と表示されているのでそもそも読み込みに由来していなさそう。

ExcelではなくWrite CSVでCSVファイルで出力。
そのファイルをExcelで開くと50000000に変換されていました。
エディタ(Notepad)で開くと”500E5”となっていました。

Example3
(同じCSVファイルをExcelとNotepadで開いています)

このことからUiPathの問題というより、Excelの話になるのは承知してますが、解決方法がわかりません…
ユーザーに、CSVで渡すのでこれをテキストエディタで開いてくださいなんて言えないので困ってます。

UiPathからのアプローチとしては表を読み込んだ後、E+(数字)を一度別の文字列で置き換え、復元する、など思いつきましたが
Eの文字や数字が出現する規則性がなく実装が大変そうなので避けたいです。

何かよい方法あればご教授いただければと思います。
過去、Excel書式関係の投稿はいくつかあり、調べられる限りで目を通しましたが解決には至りませんでした。

よろしくお願いします。

@Yashiki_takajin さん、こんにちは
書き込み先のセルの書式設定の表示形式を文字列にすると表示は解消されました。
セルの左上に緑▲のエラーはでるのですが。。

@tango さん、こんにちは。

返信ありがとうございます。
こちらでも出力されたExcelの書式を変更してみましたが、Text形式にしても50000000になってしまうんです。

ExcelはOffice 2016
UiPathは2018.4.1です。

Officeの違いなんでしょうか…
関係しているかわからないですが、海外勤務中なので海外で購入されたOfficeです。

Excel自身の可能性があり、こちらで議論するのは恐縮ですが何か解決の手がかりでもあればと思います。
もしUiPath側のアプローチで回避できる方法もあればお知恵をお貸していただければ幸いです。

よろしくお願いします。

書式はUiPathの出力前に変えておきます。
書き込んだ後だとこちらもだめでした。
あとはDataTableの段階で、シングルクォートをナンバーの前に付加するのも手としてあるかもしれません。

1 Like

ありがとうございます。

取り急ぎ、シングルクォーテーションを追加する方法でしのぎます。

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.