[問題] openpyxl 寫 XLSX 檔

看板Python作者 (evenrain)時間13年前 (2012/11/07 10:36), 編輯推噓0(006)
留言6則, 2人參與, 最新討論串1/1
不知道有沒有人對這個套件熟悉的,我遇到一個很困擾的問題, 程式碼請參考 http://pastie.org/5338051 在 6~9 行我先寫了 01:02:03 這樣的字串在 (0,0) 這個 cell, 並將該 cell 設為字串格式,然後存檔。 如果後面幾行 mark 起來,打開剛剛產生的 xlsx 檔,看起來資料是正常的 (不過儲存格的格式還是通用) 接著在第 11~14 行,我開啟了剛剛存的 xlsx 檔,並在 (0,1) 寫了 04:05:06, 一樣設成字串格式並存檔。 這時候打開 xlsx 檔,會發現 (0,0) 這個 cell 的儲存格格式 被自動轉成自訂的 hh:mm 格式....orz 我試過執行 6~9 之後打開 excel,然後把所有儲存格轉成文字格式, 再執行 11~14 ,結果是 (0,0) 變成 0.04309.... 也就是 01:02:03 轉成自訂的 hh:mm 再轉成文字這樣... 請問有什麼方法可以不要讓 excel 自己轉格式或是強制儲存格的格式嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.190.212

11/07 16:43, , 1F
應該是這個套件 把檔案讀回去的值 type放錯了
11/07 16:43, 1F

11/07 16:46, , 2F
試看看把 /reader/worksheet.py 的138行附近的
11/07 16:46, 2F

11/07 16:47, , 3F
ws.cell(coordinate).value = value 換成
11/07 16:47, 3F

11/07 16:47, , 4F
ws.cell(coordinate).set_value_explicit(value=value,
11/07 16:47, 4F

11/07 16:47, , 5F
data_type=data_type)
11/07 16:47, 5F
謝謝,改成這樣就可以了 (大心~)

11/07 17:09, , 6F
寫資料前要先設定"儲存格"格式 .NumberFormat = "@"
11/07 17:09, 6F
※ 編輯: eaden 來自: 122.116.190.212 (11/08 11:12)
文章代碼(AID): #1GcSaP5b (Python)
文章代碼(AID): #1GcSaP5b (Python)