垂直水平居中单元格内容
通过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