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 

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现EasyExcel的自适应列宽功能,你可以使用`autoSizeColumn()`方法。这个方法会根据单元格的内容自动调整列宽。 以下是一个示例代码: ```java // 导入必要的类 import com.alibaba.excel.EasyExcel; import com.alibaba.excel.write.builder.ExcelWriterBuilder; import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder; import com.alibaba.excel.write.metadata.style.WriteCellStyle; import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; import org.apache.poi.ss.usermodel.HorizontalAlignment; // 创建ExcelWriterBuilder,并设置样式策略 ExcelWriterBuilder writerBuilder = EasyExcel.write(fileName) .registerWriteHandler(new HorizontalCellStyleStrategy(getStyle())); // 获取SheetBuilder并设置自适应列宽 ExcelWriterSheetBuilder sheetBuilder = writerBuilder.sheet(); sheetBuilder.autoSizeColumnAll(); // 写入数据到Excel文件 sheetBuilder.doWrite(dataList); // 样式策略方法 private WriteCellStyle getStyle() { // 创建单元格样式 WriteCellStyle cellStyle = new WriteCellStyle(); // 设置水平居中对齐 cellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); return cellStyle; } ``` 在上述示例代码中,使用`autoSizeColumnAll()`方法来自动调整所有列的宽度。如果你只想自适应某一列,可以使用`autoSizeColumn(int columnIndex)`方法,其中`columnIndex`为列的索引。 注意,这个自适应列宽的功能需要依赖POI库的支持,所以请确保你的项目中已经导入了相关的依赖。 希望这能帮到你!如果有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值