Excel自动化

本文介绍了如何使用Python的openpyxl库来自动化处理Excel数据,包括读取数据、计算销售额、汇总每日销售额并创建新的Excel报表。通过设置标题样式、边框、行高、列宽、日期和数字格式,最终保存为每日销售报表,实现了数据整理和分析的自动化流程。

Excel自动化

1.安装与导入模块

`

pip install openpyxl

`

2.读取和处理数据

#读取数据
import pandas as pd
data = pd.read_excel('./data.xlsx')
data

在这里插入图片描述

其中每一列的含义如下:

InvoiceNo:发票编号

StockCode:产品代码

Description:产品名称

Quantity:产品数量

InvoiceDate:开票时间

UnitPrice:产品单价

CustomerID:客户编号

Country:国家名称

为了统计每天的销售额,我们先在数据中增加两列:日期和销售额,然后用函数实现汇总:

#转化数据格式
data['InvoiceDate'] = pd.to_datetime(data['InvoiceDate'])
#提取出日期
data['日期'] = data.InvoiceDate.dt.date
#计算销售额
df['销售额'] = df.Quantity * df.UnitPrice
#汇总每天的销售额
daily_sum = pd.DataFrame(data.groupby('日期')['销售额'].agg('sum')).reset_index()
daily_sum

在这里插入图片描述

3.设置和保存报表

接下来,我们对表格进行相应的设置,包括:重命名工作表、把数据写入工作表、自定义标题和表格边框样式、设置行高和列宽、不显示网格线、冻结窗格、自动筛选、设置日期和数字格式等等

from openpyxl.utils.dataframe import dataframe_to_rows
from openpyxl.styles import Font, Color, NamedStyle, Border, Side, PatternFill, Alignment, numbers

# 创建工作簿
wb = openpyxl.Workbook()

# 激活工作表
ws = wb.active

# 重命名工作表
ws.title = '每日销售额'

# 把数据写入工作表
for row in dataframe_to_rows(df_daily, index=False, header=True):
    ws.append(row)
    
# 创建自定义的标题样式
mytitle = NamedStyle(name='mytitle')
mytitle.font = Font(bold=True, size=11, color='FFFFFF')
bd = Side(style='thin', color='A6A6A6')
mytitle.border = Border(left=bd, top=bd, right=bd, bottom=bd)
mytitle.fill = PatternFill('solid', fgColor='00589F')
mytitle.alignment = Alignment(horizontal='left', vertical='center')
wb.add_named_style(mytitle)

# 创建自定义表格边框样式
myborder = NamedStyle(name='myborder')
myborder.font = Font(bold=False, size=11, color='000000')
bd = Side(style='thin', color='A6A6A6')
myborder.border = Border(left=bd, top=bd, right=bd, bottom=bd)
myborder.alignment = Alignment(vertical='center')
wb.add_named_style(myborder)

# 应用标题样式
for cell in ws[1]:
    cell.style = mytitle
    
# 对表格区域加边框
from openpyxl.utils import get_column_letter, column_index_from_string
table_range = ws['A2:' + get_column_letter(ws.max_column) + str(ws.max_row)]
for row in table_range:
    for cell in row:
        cell.style = myborder
    
# 设置行高和列宽
ws.row_dimensions[1].height = 26
ws.column_dimensions['A'].width = 15
ws.column_dimensions['B'].width = 12

# 设置不显示网格线
ws.views.sheetView[0].showGridLines = False

# 冻结窗格
ws.freeze_panes = 'A3'

# 自动筛选
ws.auto_filter.ref = 'A1:' + get_column_letter(ws.max_column) + str(ws.max_row)

# 设置对齐格式
for cell in ws['A']:
    cell.alignment = Alignment(horizontal='center', vertical='center')

# 设置日期格式
for cell in ws['A']:
    cell.number_format = numbers.FORMAT_DATE_YYYYMMDD2
    
# 设置数字格式
for cell in ws['B']:
    cell.number_format = numbers.BUILTIN_FORMATS[3]

最后,保存自动生成的 Excel 报表文件:

# 保存为新的表格
wb.save('./每日销售报表.xlsx')

打开这个新生成的 Excel 报表文件,其中的内容如下:

rs.BUILTIN_FORMATS[3]


最后,保存自动生成的 Excel 报表文件:

```python
# 保存为新的表格
wb.save('./每日销售报表.xlsx')

打开这个新生成的 Excel 报表文件,其中的内容如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值