2016-12-04 45 views
0

背景:我的第一個Excel相關腳本。使用openpyxl。 有一張Excel表格,其中包含不同列中產品的不同類型數據的加載。如何將我的字典輸出到Python中的Excel工作表中

我的目標是從特定列(例如價格,條形碼,狀態)提取某些類型的數據,將這些數據分配給唯一的產品代碼,然後將產品代碼,價格,條形碼和狀態輸出到新的Excel文檔。

我已經成功地提取數據,並把它下面的字典格式:

productData = {'AB123': {'barcode': 123456, 'price': 50, 'status': 'NEW'} 

我在得到這個輸出到一個新的報告總體思路是這樣的(雖然我知道這是不對的) :

newReport = openpyxl.Workbook() 
newSheet = newReport.active 
newSheet.title = 'Output' 

newSheet['A1'].value = 'Product Code' 
newSheet['B1'].value = 'Price' 
newSheet['C1'].value = 'Barcode' 
newSheet['D1'].value = 'Status' 

for row in range(2, len(productData) + 1): 
    newSheet['A' + str(row)].value = productData[productCode] 
    newSheet['B' + str(row)].value = productPrice 
    newSheet['C' + str(row)].value = productBarcode 
    newSheet['D' + str(row)].value = productStatus 

newReport.save('ihopethisworks.xlsx') 

實際上我需要做什麼來輸出數據?

回答

0

我會建議使用熊貓。它的語法如下:

df = pd.read_excel('your_file.xlsx') 
df['Column name you want'].to_excel('new_file.xlsx') 

你可以做更多的事情吧。 Openpyxl可能不是您的任務的正確工具(Openpyxl太籠統了)。

P.S.我會在評論中留下這一點,但在他們的寡婦決定讓任何人離開的答案,但不發表評論,但stackoverflow。

+0

這不是從數據是否在列後明確。無論如何,你的建議可以直接在openpyxl'ws ['A']'中使用 –

0

您用於提取數據的邏輯已丟失,但我懷疑最好的方法是使用它來並行地循環兩個工作表。然後,您可以完全避免使用字典,只需將循環附加到新工作表。

僞代碼:

ws1 # source worksheet 
ws2 # new worksheet 

product = [] 
code = ws1[…] # some lookup 
barcode = ws1[…] 
price = ws1[…] 
status = ws1[…] 

ws2.append([code, price, barcode, status]) 
0

大熊貓將工作最適合這個 這裏有一些例子

import pandas as pd 

#df columns: Date Open High  Low Close  Volume 
#reading data from an excel 
df = pd.read_excel('GOOG-NYSE_SPY.xls') 

#set index to the column of your choice, in this case it would be date 
df.set_index('Date', inplace = True) 

#choosing the columns of your choice for further manipulation 
df = df[['Open', 'Close']] 

#divide two colums to get the % change 
df = (df['Open'] - df['Close'])/df['Close'] * 100 


print(df.head()) 
相關問題