将多工作表.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
相关产品推荐
相关产品推荐

