博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用python的reportlab库生成PDF报表
阅读量:6033 次
发布时间:2019-06-20

本文共 1553 字,大约阅读时间需要 5 分钟。

hot3.png

前言

     reportlab不是python的标准库,它的强大之处在于能满足绝大部分报表的需求形式,这篇文章将介绍reportlab中基本常用的api,使用canvas画出一份整洁的PDF报表。内容均来自reportlab的官方。

依赖与安装

    首先,这里是官方的。reportlab目前应该只是支持到python2.7, py3的同学另想办法吧。

    楼主的环境:fedora18 64bit

安装python2.7 or 2.6 or 2.5 PIL:如果你有图片的操作需要这个库,python imaging library , 。   
$ tar xvfz Imaging-1.1.7.tar.gz$ cd Imaging-1.1.7$ python setup.py install
官网上有提到其他的依赖包,如果需要的话可以自行测试,如Diagra。
reportlab的安装,使用 easy_install reportlab 或者pip install reportlab就可以

使用

实例:

别怪我再提一遍官方的,文档是很全的。

我贴出下面的代码来解释基本的使用:

# -*- coding: utf-8 -*- #字体库import reportlab.lib.fonts              #canvas画图的类库from reportlab.pdfgen.canvas import Canvas  #用于定位的inch库,inch将作为我们的高度宽度的单位from reportlab.lib.units import inch    if __name__ == "__main__":    #声明Canvas类对象,传入的就是要生成的pdf文件名字    can = Canvas('report.pdf')              pdf_head(can, "test for REPORTLAB!")    #showpage将保留之前的操作内容之后新建一张空白页    can.showPage()                          #将所有的页内容存到打开的pdf文件里面。    can.save()                          def pdf_head(canvas, headtext):    #setFont是字体设置的函数,第一个参数是类型,第二个是大小    canvas.setFont("Helvetica-Bold", 11.5)      #向一张pdf页面上写string    canvas.drawString(1*inch, 10.5*inch, headtext)      #画一个矩形,并填充为黑色    canvas.rect(1*inch, 10.3*inch, 6.5*inch, 0.12*inch,fill=1)     #画一条直线    canvas.line(1*inch, 10*inch, 7.5*inch, 10*inch)              

另外:

showPage()使用后将重置之前字体之类的设置 inch作为量度单位是可以的,一张默认纸张的大小,将以最左下角作为(0,0)坐标点,正负为方向 一张纸的高度大约12*inch,宽大约10*inch 两个坐标端点确定一条直线 一条对角线的两个端点坐标确定一个矩形 设置颜色等其他api请参考官方文档

另外的另外:

直接使用api实际是最麻烦的用法,是基础用法。 使用RML,HTML做报表,请参考 。

效果截图

转载于:https://my.oschina.net/vincent67/blog/188068

你可能感兴趣的文章
决心书
查看>>
10.28 rsync工具介绍 10.29/10.30 rsync常用选项 10.31 rsync通
查看>>
centos6.5安装和简单实用pyenv
查看>>
linux的运维管理UNIT4
查看>>
Linux基础知识(2)
查看>>
【重点】米尔发布Zynq UltraScale MPSoC核心板
查看>>
10 条提升 Android 性能的建议
查看>>
04.spring security oauth2认证中心 集成zuul网关的代码分析
查看>>
前端h5框架总结
查看>>
Win7+Ubuntu11
查看>>
Linux运维之道之admin1.4(权限和归属,LDAP认证)
查看>>
每日一题--1
查看>>
FreeMarker中的日期时间处理
查看>>
单表查询的顺序
查看>>
MyBatis:简单物理分页实现(Plugin)
查看>>
div层次整理 / 自定义pycharm补全 / 注释 /keymap /tab
查看>>
大文件如何传输,大文件的传输方式有哪些?
查看>>
JAVA集合类List求交集
查看>>
负载均衡【nginx反向代理】
查看>>
docker的持久化存储和共享存储和网络架构
查看>>