Openpyxl 居中所有含有数据的单元格,自适应列宽

垂直水平居中单元格内容

通过Alignment()这个函数规定一个样式

垂直水平居中的样式为 horizontal=’center‘,vertical='center'

wrapText=True 是让单元格的内容自动换行

from openpyxl.styles import Alignment
from openpyxl import Workbook


wb = Workbook()
ws = wb.active
file = '具体的文件'
# 居中所有单元格
align = Alignment(horizontal='center', vertical='center',wrapText=True)
# 两层循环遍历所有有数据的单元格
for i in range(1, ws.max_row + 1):
    for j in range(1, ws.max_column + 1):
        ws.cell(i, j).alignment = align
wb.save(filename=file)

自适应列宽

单元格内容太长容易导致显示的不全,可以手动调节,设置width

from openpyxl.utils import get_column_letter

width = 3  # 手动加宽的数值 
# 单元格列宽处理
dims = {}
for row in ws.rows:
    for cell in row:
        if cell.value:
            cell_len = 0.7 * len(re.findall('([\u4e00-\u9fa5])', str(cell.value))) + len(str(cell.value))
            dims[cell.column] = max((dims.get(cell.column, 0), cell_len))
    for col, value in dims.items():
        ws.column_dimensions[get_column_letter(col)].width = value + width 

你可能感兴趣的:(Openpyxl,python)