背景:我的第一个与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')
输出数据实际上需要做什么?
答案 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())