有这样一个表格:
transaction_id | product_id | price |
1001 | 1 | $5.95 |
1002 | 2 | $6.95 |
1003 | 3 | $7.95 |
现在价格出现了错误,需要每个都乘以0.9,在excel中若数据过多将变得十分繁琐,尝试用python解决。
将这个表格导入进项目文件,
import openpyxl as xl//引用openpyxl包,这个包可以在皮皮下载,并重命名为xl,方便后面写作 wb=xl.load_workbook('transactions.xlsx')//表格文件的名字是transactions.xlsx sheet=wb['Sheet1']//确定sheet # cell=sheet['a1'] cell=sheet.cell(1,1)//这里演示的是两种查看单元格的方法,访问a1单元格,同等效力 print(cell.value)//打印a1的值检验,检验成功
print(sheet.max_row)//获取当前表格的行数
for row in range(1,sheet.max_row+1): print(row)//循环行数,打印检验,成功
for row in range(2,sheet.max_row+1)://第一行是表头,由于不需要用所以从2开始循环 cell=sheet.cell(row,3)//获取第三列的数据 print(cell.value)//打印检验,检验成功
for row in range(2,sheet.max_row+1): cell=sheet.cell(row,3)//获取第三列(单元格) corrected_price=cell.value*0.9//乘以0.9,保存为一个变量 corrected_price_cell=sheet.cell(row,4)//获取第四列(单元格) corrected_price_cell.value=corrected_price//把改正后的数据赋给第四列单元格 wb.save('transactions2.xlsx')//保存文件为transactions2,不覆盖以防出bug
再实现制表功能,
from openpyxl.chart import BarChart,Reference
values=Reference(sheet, min_row=2, max_row=sheet.max_row, min_col=4, max_col=4) chart=BarChart() chart.add_data(values) sheet.add_chart(chart,'e2')
整体代码实现如下:(做成了函数)
import openpyxl as xl from openpyxl.chart import BarChart,Reference def process_workbook(filename): wb=xl.load_workbook(filename) sheet=wb['Sheet1'] for row in range(2,sheet.max_row+1): cell=sheet.cell(row,3) corrected_price=cell.value*0.9 corrected_price_cell=sheet.cell(row,4) corrected_price_cell.value=corrected_price values=Reference(sheet, min_row=2, max_row=sheet.max_row, min_col=4, max_col=4) chart=BarChart() chart.add_data(values) sheet.add_chart(chart,'e2') wb.save(filename)