簡體   English   中英

如何通過 Json 和 Power Query 在 Excel 中導入 .Net DateTime 和 TimeSpan

[英]How to import .Net DateTime and TimeSpan in Excel via Json and Power Query

簡短版:如何通過 Json 和 Power Query 將具有 .Net DateTime 或 TimeSpan 類型的數據導入 Excel 表? 我不讓它工作。

更多詳細信息:我有稀疏數據(int 值及時記錄稀疏),我想在 Excel 中導入為表格和圖表。 在我的 C# 代碼中,它表示為 Dictionary< DateTime , int>。 我將數據導出到 Json 文件(使用 System.Text.Json)並通過 Power Query 將其導入 Excel。 在 Power Query 中,DateTime 最終作為文本列(在預覽中看起來像 0001-07-24T01:05:45)。 我將類型更改為日期/時間,一切似乎都很好(在預覽中看起來像 0001-07-24 01:05:45)。 但是當我保存並將其加載到表中時,該列是空白的。 這是怎么回事?

我用TimeSpan嘗試了同樣的事情。 Json 無法序列化 TimeSpan 所以我只是在序列化之前使用了 .ToString() 。 在 Power Query 中,我將值轉換為 Duration ,當我將其加載到表中時,它確實有效……雖然我無法讓排序工作。 我只能按 A->Z 排序,而不是按時間排序,盡管 Excel 顯然明白它們是時間(圖表如預期的那樣稀疏)。

對不起,如果這看起來像一個 Excel / Power Query 問題,但它與兩種 .Net 類型有關,我認為以前一定有很多 .Net 程序員做過。

如果您在 powerquery 中有0001-07-24T01:05:45 ,格式為日期/時間,它將顯示給您

在此處輸入圖像描述

並作為空白加載到 excel 中,因為 Excel 中沒有0001年。 您需要將年份設置為其他內容

這添加了一個新列,其中 0001 變為 2022

= Table.AddColumn(#"PriorStepName", "Custom", each DateTime.FromText(Text.Replace(Text.From([ColumnNameHere]),"0001","2020")),type datetime)

或者這個,用 2020 代替 0001,就位

= Table.TransformColumns(#"PriorStepName",{{"ColumnNameHere", each DateTime.FromText(Text.Replace(Text.From(_),"0001","2020")),type datetime}})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM