表格文件转换成带完整表格样式的PDF文件

最近项目上需要把表格文件(xls、xlsx、csv等格式)转换成PDF,在网上找了很多工具,都不是很理想,例如下图是使用smallpdf工具转换的效果:

它虽然转换了,内容也都在,但是样式不好看,没表格效果不说,并且表格列数多的时候,它会把其他几列放在后面几页进行显示,这展示的效果就很不好了,然后又找了其他的一些转换工具,效果都大差不差,没办法,只能自己造轮子。好在使用reportlab 这种Python库对文件的转换支持的很好,最后没费太多功夫做了个转换工具出来,效果如下:

转换Excel为PDF后的效果如下:

这效果就很舒服了,基本和Excel展示效果差不多。

代码核心部分如下:

            # 处理Excel文件
            if csv_path.endswith(".xls") or csv_path.endswith(".xlsx"):
                df = pd.read_excel(csv_path, engine='openpyxl')
            else:
                # 处理CSV文件
                df = pd.read_csv(csv_path)

            styles = getSampleStyleSheet()
            style_normal = styles["Normal"]
            
            data = [df.columns.tolist()]
            for row in df.values:
                wrapped_row = [Paragraph(str(cell), style_normal) for cell in row]
                data.append(wrapped_row)

            # 创建PDF文档
            doc = SimpleDocTemplate(pdf_path, pagesize=landscape(letter))

            # 配置表格样式
            table_style = TableStyle([
                ('BACKGROUND', (0,0), (-1,0), colors.HexColor(header_color)),
                ('TEXTCOLOR', (0,0), (-1,0), colors.whitesmoke),
                ('ALIGN', (0,0), (-1,-1), 'CENTER'),
                ('FONTNAME', (0,0), (-1,0), header_font),
                ('FONTSIZE', (0,0), (-1,0), header_size),
                ('BOTTOMPADDING', (0,0), (-1,0), 10),
                ('BACKGROUND', (0,1), (-1,-1), colors.beige),
                ('GRID', (0,0), (-1,-1), 0.5, colors.black)
            ])
...

列宽可以根据需要调整,我默认给的80,高度我是设置的自适应,主要是为了展示完整。

小工具已打包,有需要的文章上方自取。

注:打开会有点慢(大约8秒),主要是在搜索系统的可用字体。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值