Read Range で日時のセルを読み込むと 1秒マイナスされてDataTableに格納される

日時(yyyy/MM/dd HH:mm:ss)が入力されたセルを含むExcelファイルをRead Rangeアクティビティ(2種類どちらでも)を用いてDataTableに格納すると、入力された日時が「1秒マイナスされて」格納されます。

ex. 2020/01/09 11:27:00 ⇒ 2020/01/09 11:26:59

  • すべてのデータで発生するものではなく、入力データによっては発生しないケースもあります。
    したがってデータの入力方法に依存する可能性が高いですが、Excelで表示する限りでは発生/非発生どちらも同じデータのように見受けられます。
  • 解消方法として「半角スペース2個を、半角スペース1個に置換する」というワークアラウンドを発見しています。

同様の事象に遭遇した方がいれば、情報を共有していただけると嬉しいです。

こんにちは

試しに手元の環境(EXCEL2013+UiPath 2019.10.2CE + EXCEL Activity Package各バージョン)で試してみましたが再現できませんでした。

あくまで仮説の一つですが、msec値の違いが考えられるのでは?と思います。
EXCEL上の表現とReadRangeでのmsec値の扱いが異なるようですので、以下一度検証いただければと思います。(EXCEL側は四捨五入ですが、ReadRangeは切り捨ての模様)

1.EXCEL-Read Rangeの「表示形式を維持」オプションをtrueにして読み込んでみる。
2.Excel側のセルの書式設定を yyyy/m/d hh:mm:ss.000 としてmsecまで表示してみる。

あと発生する環境に関する情報を共有いただけると良いかもしれません。

1 Like

試しに手元の環境(EXCEL2016+UiPath 2018.4.4EE + EXCEL(2.5.1)で試してみましたが再現できませんでした。

EXCEL上の時刻は1未満の数値なので、EXCEL上の時刻が直接入力されているのではなく、他のセルをワークシート関数などで時刻化したものかもしれませんね。あくまでも推論ですが。。。

1 Like

同様のケースとは言えませんが、Excelの「時刻と日付の書式」の表示形式を読み込む際に 文字列として読み込まれたケースが過去にありました。

ex 2020/1/9 14:45 → 43839.6147326389
(表示形式の維持にチェックを入れています)

結局未解決のまま、parseメソッドで変換させたり、一度ExcelをVBAでcsvとして出力し、csvを読み込む方法で回避いたしました。
優れたソリューションとは言えませんし、同様のケースではございませんが、日付と時刻のコンバートの問題として何か関係性があるのかもしれません。

私も根本的な原因があれば知りたいです。

1 Like

@Yoichi @HANACCHI @saintseiyer
みなさま、ありがとうございます!

【環境】

  • WIn10 (1709)
  • Office365 Excel (1808)
  • UiPath Studio/Robot 18.4.3
  • UiPath.Excel.Activities 2.5.1

いずれもテストしてみましたが変化有りませんでした。

データ自体は直接入力されているものでした。

CSVとして出力して回避できるかと考えたのですが、そもそもDataTableの時点でデータが異なっているため効果がありませんでした。

1 Like

こんにちは

事象を再現できるデータを共有いただくことは難しいでしょうか?ダミーデータでも結構ですので...

1 Like

minimum で再現できるワークフローと対象データを作成しました。
対象データのうち、3行目と5行目において事象が発生します。

readrange_workflow.zip (9.0 KB)

1 Like

ありがとうございます。

いただいたxlsxを確認しました。

先ほど仮説として申し上げたことなのですが、
当方の環境で日付のデータの入ったセルの書式をyyyy/mm/dd hh:mm:ss.000
としたところ
一部のデータが例えば
2020/01/13 17:59:59.990 のように表示されました。
エクセルの画面上は四捨五入で表示されるため、秒までの表示ですと
2020/01/13 18:00:00
と表示されますが、Read Range Activityはmsecを切り捨てるようなので
結果として
202/01/13 17:59:59
となることが直接の原因かと思います。

まずはお手元の環境で同様の状況となっているか確認いただけないでしょうか?

またこのデータどのように入力されたものかが分かると、原因のつぶしこみができるかもしれません。

1 Like

EXCELを解凍して、セルに格納されている生のデータを見てみました(よい子はマネしないでね)。

<c r=“B5” s=“3”>
43843.743055439816
<c r=“C5” s=“3”>
43843.749999884261

cheez_RPAさんからのEXCELで見えている値を、別のブック、シートに入力して、そのシートに設定されている値をみてみました。

<c r=“B5” s=“2”>
43843.743055555555
<c r=“C5” s=“2”>
43843.75

微妙にずれていますね。

cheez_RPAさんのEXCELシートに設定されている日時の情報は、別のシステムから到来したものとしたら、日時の表現に方言があるのかもしれませんね。

データの出元から調査していくのも一考かと。

2 Likes

@Yoichi @HANACCHI
ありがとうございます!

アドバイスいただいた内容を自身の環境で試した際は同じように見えなかったのですが、やはり丸めが入っていたんですね。。。

さすがですね…! @Yoichi さんの話も踏まえると、Excel と UiPath で読み取りに差があることに起因しているようですね。。。

対象のデータの入力は手動と聞いていますが、環境や手順などの詳細を把握していないため、それがきっかけとして上記のような事象につながっている可能性もありそうですね。
いただいた回答を元に、対応策など引き続き検討してみます。

3 Likes

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