python如何对sap自动操作 (如何用python处理excel数据)

用Python开发数据分析程序时,会经常使用Excel文件,通常都采用读取Excel文件的方式。Python也可以使用openpyxl这个专用工具包对Excel文件直接进行操控,可以改写Excel文件的内容、读取其中一部分数据、在Excel文件中插入图形等等。本文就讲述在Python代码中如何使用openpyxl来操控Excel文件。

首先安装openpyxl工具包,

pip install openpyxl

接下来编写一段Python程序,名称为automate_excel.py

步骤如下:

导入openpyxl及其相关绘图函数

import openpyxl as xl
from openpyxl.chart import BarChart, Reference

打开Excel文件auto_excel.xlsx

wb = xl.load_workbook('auto_excel.xlsx')
sheet = wb['Sheet1']

以上代码中访问auto_excel.xlsx文件的sheet1表,内容如下图所示:

python如何变成exe,python如何调用打印机打印

读取sheet1中第3列、第2到4行的数据

for row in range(2, sheet.max_row + 1):
      cell = sheet.cell(row, 3)

修改sheet1表的内容

把”价格“一列的数据乘以0.9,然后保存为新的一列,代码如下:

corrected_price = float(cell.value.replace('#39;,'')) * 0.9
corrected_price_cell = sheet.cell(row, 4)
corrected_price_cell.value = corrected_price

在auto_excel.xlsx中的sheet1表中,插入柱状图

选择第4列作为柱状图的数据,代码如下:

values = Reference(sheet, min_row=2, max_row=sheet.max_row, min_col=4, max_col=4)

以上代码中使用了reference类来选择所需要的数据,这就要指定5个参数的值:

第1个参数是“sheet”,接下来是 min_row = 2和max_row= sheet。还有两个参数是min_col=4和max_col=4,并把结果存储到value变量中。

在sheet1中,创建柱状图

chart = BarChart()
chart.add_data(values)
sheet.add_chart(chart, 'e6')

其中chart是BarChart的一个实例,chart.add_data(values)这一句添加作图所需要的数据,sheet.add_chart(chart, 'e6')这一句指定图形左上角在sheet中的位置,这里的位置是e6。

把文件auto_excel.xlsx另存为auto_excel2.xlsx

wb.save("auto_excel2.xlsx")

修改后的auto_excel2.xlsx文件,如下图所示:

python如何变成exe,python如何调用打印机打印

整个过程完整代码如下:

import openpyxl as xl
from openpyxl.chart import BarChart, Reference
  
  
def process_workbook(filename1,filename2):
    wb = xl.load_workbook(filename1)
    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(filename2)

process_workbook("auto_excel.xlsx","auto_excel2.xlsx")

(本文完)