如何在Python中将我的字典输出到Excel工作表

时间:2016-12-04 14:01:13

标签: python excel python-3.x openpyxl

背景:我的第一个与Excel相关的脚本。使用openpyxl。 有一张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')

输出数据实际上需要做什么?

3 个答案:

答案 0 :(得分:0)

我建议使用Pandas。它具有以下语法:

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

你可以用它做更多的事情。 Openpyxl可能不适合您的任务(Openpyxl过于笼统)。

P.S。我会在评论中留下这个,但是stackoverflow,在他们的widom决定让任何人留下答案,但不发表评论。

答案 1 :(得分:0)

缺少用于提取数据的逻辑,但我怀疑最好的方法是使用它来并行循环两个工作表。然后,您可以完全避免使用字典,只需将循环附加到新工作表。

伪代码:

ws1 # source worksheet
ws2 # new worksheet

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

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

答案 2 :(得分: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())