You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将多工作表.xlsx转为多个PDF:表格样式优化求助

优化建议及代码调整

针对你遇到的表格线条过粗和文字尺寸过小问题,这里给出具体的代码优化方案,同时修复原脚本中表头读取的潜在问题:

优化后的完整代码

import openpyxl
import pandas as pd
from matplotlib.backends.backend_pdf import PdfPages
import matplotlib.pyplot as plt

def xlsx_to_pdf(filename):
    wb = openpyxl.load_workbook(filename)
    for ws in wb:
        # 正确读取表头与数据:第一行为表头,剩余行是表格内容
        data = list(ws.values)
        df = pd.DataFrame(data[1:], columns=data[0])
        
        with PdfPages(f"{ws.title}.pdf") as pdf:
            # 根据列数动态调整画布宽度,避免表格挤压
            fig_width = max(10, len(df.columns)*2)
            fig, ax = plt.subplots(figsize=(fig_width, 8))
            ax.axis('tight')
            ax.axis('off')
            
            # 创建表格并配置基础样式
            the_table = ax.table(
                cellText=df.values,
                colLabels=df.columns,
                cellLoc='center',
                loc='center',
                edges='horizontal'  # 仅保留水平分隔线,减少视觉杂乱
            )
            
            # 手动设置字体大小,避免自动适配的过小尺寸
            the_table.auto_set_font_size(False)
            the_table.set_fontsize(12)
            
            # 调整线条粗细与颜色,让表格更柔和
            for key, cell in the_table.get_celld().items():
                cell.set_linewidth(0.5)
                cell.set_edgecolor('#cccccc')
            
            # 优化布局,防止内容被裁剪
            plt.tight_layout()
            # 提高dpi保存,让文字和线条更清晰
            pdf.savefig(fig, bbox_inches='tight', dpi=300)

xlsx_to_pdf("Provisionsabrechnung.xlsx")

关键优化点说明

  • 修复表头读取逻辑:原脚本会把第一行数据重复当作列索引,调整后明确区分表头和内容行,符合Excel表结构。
  • 自定义文字大小:关闭自动字体适配,手动设置set_fontsize(12),可根据需求调整为14、16等更大数值。
  • 优化线条样式:通过edges='horizontal'减少垂直线条,同时把线条宽度设为0.5(默认更粗),搭配浅灰色边缘,让表格更清爽。
  • 适配表格尺寸:根据列数动态计算画布宽度,避免列数多时表格被挤压变形。
  • 提升清晰度:保存PDF时设置dpi=300,让文字和线条边缘更锐利。

内容的提问来源于stack exchange,提问作者M K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 23:55:26