python生成/读取Excel文件

一、生成Excel文件

        安装模块

pip install openpyxl

        代码示例

import openpyxl
from openpyxl.styles import Font
from openpyxl.styles import PatternFill
from openpyxl.drawing.image import Image


wb = openpyxl.Workbook()  # 创建excel文件


sheet1 = wb.active  # 获取第一个sheet,即"Sheet"
sheet1.title = "这里是sheet1"  # 给"Sheet"改名

"""
wb.remove_sheet(wb['Sheet'])  # 移除名为"Sheet"的sheet
sheet1 = wb.create_sheet('这里是sheet1')  # 创建一个sheet
"""

sheet1.cell(row=1, column=5).value = '内容'  # 在sheet1的第一行第E列写入内容
sheet1.cell(row=1, column=1).font = Font(color='FF0033')  # 设置第1行第A列的文字颜色为FF0033(红色)
sheet1.cell(row=2, column=1).fill = PatternFill(fill_type='solid', start_color='7CFC00', end_color='7CFC00')  # 设置第2行第A列的填充底色为7CFC00(绿色)
sheet1.column_dimensions['A'].width = 20  # 设置列A的宽度为20字节

image_path = 'xxxx.png'
img = Image(image_path)
sheet1.add_image(img, 'F1')  # 在F1单元格开始插入图片

wb.save('xxxx.xlsx')  # 保存文件名为xxxx.xlsx

二、读取Excel文件

        安装模块

pip install openpyxl

        代码示例

import openpyxl


# 判断是否为合并单元格,是则返回合并单元格的内容,否则返回当前单元格的内容
def merged_cells_value(sheet, axis, merged_cells):
    """
    参数1:要操作的sheet
    参数2:单元格位置
    参数3:这个sheet里的合并单元格列表
    """
    if sheet[axis].value:
        return sheet[axis].value

    for c in merged_cells:
        t = []
        l = str(c)[0]
        for m in range(int(str(c).replace(l, '').split(':')[0]), int(str(c).replace(l, '').split(':')[1]) + 1):
            t.append(l + str(m))
        if axis in t:
            return sheet.cell(row=c.min_row, column=c.min_col).value
    else:

        return sheet[axis].value

codes = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

wb = openpyxl.load_workbook('xxxx.xlsx')  # 打开xxxx.xlsx文件
sheets = workbook.worksheets  # 获取所有sheet
for sheet in sheets:  # 遍历sheet列表
    merged_cells = [i for i in sheet.merged_cells.ranges]  # 获取当前sheet的所有合并单元格
    rows = sheet.max_row  # 获取当前sheet的总行数
    columns = sheet.max_column  # 获取当前sheet的总列数
    for row in range(1, rows + 1):
        for column in range(1, columns + 1):
            # 拼接出当前单元格的所在位置
            if column < len(codes):
                axis = codes[column] + str(x)
            else:
                axis = codes[int(column/len(codes))] + codes[column%len(codes)] + str(x)
            val = merged_cells_value(sheet, axis, merged_cells)  # 获取指定单元格里的内容
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值