時,不承擔文本的數量大約有如何從文本解讀爲一個數字,或者如何輸出數字格式與openpyxl停止Excel的許多問題,但我還沒有看到這個問題的任何溶液:openpyxl請輸入
我有別人給我的Excel電子表格,所以我沒有創建它。當我用Excel打開文件時,我有一些特定的值,如「5E12」(克隆號,如果有人在意)顯示正確顯示,但每個旁邊都有一個綠色箭頭,警告我「這似乎是一個數字存儲爲文本「。 Excel然後問我是否想將它轉換爲數字,如果我看到是,我得到5000000000000,然後自動轉換爲科學記數法並再次顯示5E12,只有這一次文本輸出將顯示滿零的完整數字。請注意,在轉換之前,這確實是文本,即使是Excel,我也只會被警告/提供將其轉換。
因此,當使用openpyxl(從openpyxl.reader.excel導入load_workbook)讀取此文件時,5E12會自動轉換爲5000000000000.我假設openpyxl使用與Excel相同的假設,只有轉換髮生沒有提示或輸入我的部分。
我該如何防止這種情況發生?我不希望看起來像「存儲爲文本的數字」的文本轉換爲數字。除非我這麼說,否則它們是文字。
到目前爲止,我已經找到了唯一的解決辦法是將單引號添加到每個單元的前面,但是這不是一個理想的解決方案,因爲它是手工勞動,而不是編程解決方案。此外,解決方案需要是一般的,因爲我並不總是知道這個問題可能發生的地方(我每天讀數百萬行,所以我不想手工做任何事情)。
我認爲這是openpyxl問題。從2011年開始有一個谷歌小組討論提到了這個問題,但是認爲它太稀罕無關緊要了。 https://groups.google.com/forum/?fromgroups=#!topic/openpyxl-users/HZfpShMp8Tk
那麼,有什麼建議?
您是否必須*寫入*到XLSX文件以及讀取它們?如果沒有,你可能想看看'xlrd',它讀取XLS和XLSX文件,並且更好地保存它找到的任何數據類型。 –
@John謝謝 - 這正是我所需要的。 xlrd自從我第一次開始這個項目以來已經有所改進,所以即使這並不能回答我的實際問題,但它確實解決了我的問題,即轉儲openpyxl並切換到xlrd。 (編輯:它確實回答我的問題「我如何防止這種情況發生」,它只是沒有解決如何與openpyxl做這個問題,如果其他人仍然想知道) – Dannid