python openpyxl获取xlsx内容信息

近期遇到了某个需求,需要获取xlsx表格里的信息,且不只是简单的文字信息,还包括单元格的底色等等,在这里记录下使用openpyxl这个库的记录。

首先需要注意的是,openpyxl只能处理xlsx格式的文件,如果不是这个格式会报错。
在openpyxl中,单元格是以cell的形式进行存储

导入包:

import openpyxl

打开文件遍历单元格:
可以直接通过自带的迭代器获取元素,但是个人更倾向于第二种,通过指定行号列号的方式获取对应的单元格。因为实际工作过程中表格很多时候是有合并单元格的情况的,如果直接用生成的迭代器会发现内容非常混乱。还有就是openpyxl默认下标是从1开始的,而非0开始

workbook = openpyxl.load_workbook(”test.xlsx")
worksheet = workbook.active

for row in worksheet.iter_rows():
    for cell in row:
         print(cell.value)

for i in range(1, worksheet.max_row+1):
    for j in range(1, worksheet.max_column+1):
        print(worksheet.cell(i, j).value)

通过cell.fill获取单元格的格式:

for i in range(1, worksheet.max_row+1):
    for j in range(1, worksheet.max_column+1):
        print(worksheet.cell(i, j).fill)

可以看到有很多参数:

rgb='00000000', indexed=None, auto=None, theme=None, tint=0.0, type='rgb', bgColor=<openpyxl.styles.colors.Color object>

如果需要获取单元格的背景色:

for i in range(1, worksheet.max_row+1):
    for j in range(1, worksheet.max_column+1):
        print(worksheet.cell(i, j).fill.bgColor.rgb)

通过表名获取xlsx文件中的某个表,这时候就不用再activel了:

 workbook = openpyxl.load_workbook("test.xlsx")
 worksheet = workbook.get_sheet_by_name('机场')

给单元格加上边框和文字居中:

from openpyxl.styles import Border, Alignment, Side
    # 居中样式
    align = Alignment(horizontal='center', vertical='center', wrap_text=True)
    # 边框样式
    border = Border(left=Side(border_style='thin'),
                    right=Side(border_style='thin'),
                    top=Side(border_style='thin'),
                    bottom=Side(border_style='thin'))

修改单元格内容和样式直接赋值即可

worksheet.cell(i,j).value = 'hi'
worksheet.cell(i,j).border = border
worksheet.cell(i,j).alignment = align

保存修改的xlsx文件:

workbook.save(save_file_name)
workbook.close
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值