天天看點

python生成pdf報表_用python的reportlab庫生成PDF報表

前言

reportlab不是python的标準庫,它的強大之處在于能滿足絕大部分報表的需求形式,這篇文章将介紹reportlab中基本常用的api,使用canvas畫出一份整潔的PDF報表。内容均來自reportlab的官方user guide。

依賴與安裝

首先,這裡是官方的installation guide。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就可以

使用

執行個體:

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

我貼出下面的代碼來解釋基本的使用:

# -*- 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做報表,請參考這裡。

效果截圖

python生成pdf報表_用python的reportlab庫生成PDF報表