2016-06-26 81 views
1

如何獲取電子表格的值,因爲它們格式化?使用Excel的格式設置功能中加入熊貓閱讀格式爲excel

ITEM NAME UNIT PRICE 
item1  USD 99 
item2  SGD 45 

但術語「美元」和「新元」,而不是由read_excel功能看出:IM上的電子表格的工作與貨幣格式

例如,這的熊貓。我會得到的價值,但不是貨幣的名稱。我只能在電子表格上工作,因爲我有各種各樣的電子表格,每張電子表格大約有6-7張,我希望有一個熊貓(或python)級別的解決方案,而不是一個excel級別的解決方案。

謝謝你們。

丹尼爾,這是我如何實施'xlrd'引擎,它似乎沒有做任何事情。

excel = pd.ExcelFile('itemlist.xlsx', sheetname=None) 
master = pd.DataFrame(None) 

for sheet in excel.sheet_names: 
    df = pd.read_excel(excel,sheet,header=2, engine='xlrd') 
    master=master.append(df) 
+0

熊貓在內部使用'xlrd',它也可以解析格式化信息。 – Daniel

+0

@Daniel編輯我的帖子,以顯示我是如何實現xlrd引擎的,儘管我似乎在誤解某些東西 – carlo

回答

1

有沒有什麼好辦法做到這一點。 pandas沒有的數字格式的知識,並xlrd似乎並不能夠從.xlsx文件讀取格式 - 參見here

你可以使用openpyxl做到這一點,它至少可以訪問數字格式,但看起來你必須自己實現所有的解析邏輯。

In [26]: from openpyxl import load_workbook 

In [27]: wb = load_workbook('temp.xlsx') 

In [28]: ws = wb.worksheets[0] 

In [29]: ws.cell("B2") # numeric value = 4, formatted as "USD 4" 
Out[29]: <Cell Sheet1.B2> 

In [30]: ws.cell("B2").value 
Out[30]: 4 

In [31]: ws.cell("B2").number_format 
Out[31]: '"USD "#' 
0

給任何人具有同樣的問題,我做到了通過使用該answer

它保留了貨幣細節顯示在電子表格中,並且,同時一點點麻煩的,它確實分隔每個片成CSV中,無論如何,這項工作。