欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python自動化辦公之生成PDF報告詳解

 更新時間:2023年03月29日 10:47:49   作者:Sir?老王  
因為工作需要經(jīng)常需要生成很多的PDF報告給客戶查看產(chǎn)品效果以及過程的講解,每次都需要按照一定的格式的編寫文檔并生成PDF報告,這樣重復(fù)性的工作實在太累。本文就來用Python實現(xiàn)自動生成PDF報告吧

因為工作需要經(jīng)常需要生成很多的PDF報告給客戶查看產(chǎn)品效果以及過程的講解。

每次都需要按照一定的格式的編寫文檔并生成PDF報告,這樣重復(fù)性的工作實在太累。

想著可以使用python生成一份給用戶看的報告,里面需要插入圖片、表格、文字說明等等。

使用第三方的python非標(biāo)準(zhǔn)模塊reportlab就能滿足直接生成PDF報告的需要,由于是非標(biāo)準(zhǔn)庫需要使用pip的方式安裝一下該模塊。

使用pip安裝reportlab模塊,支持生成PDF文檔。

pip?install?reportlab?-i?https://pypi.tuna.tsinghua.edu.cn/simple

若是在安裝過程中出現(xiàn)缺失C++環(huán)境導(dǎo)致構(gòu)建失敗時,可以直接選擇使用wheel文件的方式安裝reportlab模塊。

.whl文件的下載地址如下:https://www.lfd.uci.edu/~gohlke/pythonlibs/

下載完成之后存儲到本地磁盤,按照存放的路徑安裝reportLab模塊即可,安裝方式可以參考下面的安裝方式。

pip?install?wheel?-i?https://pypi.tuna.tsinghua.edu.cn/simple

pip?install?D:\downloads\reportlab-3.5.57-cp36-cp36m-win_amd64.whl

提前將reportlab模塊中需要使用到的python對象導(dǎo)入到當(dāng)前的代碼塊中。

from?reportlab.pdfbase?import?pdfmetrics??#?注冊字體
from?reportlab.pdfbase.ttfonts?import?TTFont??#?字體類
from?reportlab.platypus?import?Table,?SimpleDocTemplate,?Paragraph,?Image??#?報告內(nèi)容相關(guān)類
from?reportlab.lib.pagesizes?import?letter??#?頁面的標(biāo)志尺寸(8.5*inch,?11*inch)
from?reportlab.lib.styles?import?getSampleStyleSheet??#?文本樣式
from?reportlab.lib?import?colors??#?顏色模塊
from?reportlab.lib.units?import?cm??#?單位:cm

模塊導(dǎo)入完成之后,第一步需要設(shè)置PDF文檔中使用到的字體,字體可以根據(jù)自己的喜好自行設(shè)置。

#?Registering?a?font?named?'simfang'?with?the?file?'simfang.ttf'.
pdfmetrics.registerFont(TTFont('simfang',?'simfang.ttf'))

我這里選擇的字體是simfang.ttf,關(guān)于windows系統(tǒng)中的默認字體可以下面的路徑中查看。

開發(fā)業(yè)務(wù)代碼之前,我們可以將公共的部分提到最外面,這里使用getSampleStyleSheet函數(shù)將獲取到所有的樣式表后面在其他地方也可以使用。

#?Getting?a?list?of?styles?that?can?be?used?in?the?document.
style_list?=?getSampleStyleSheet()

1、插入PDF標(biāo)題

大標(biāo)題設(shè)置字體樣式對象為Heading1,字體顏色為綠色,大小為18并且加粗。

def?insert_full_title(title_name=None):
????"""
????This?function?takes?in?a?title?name?and?returns?the?full?title?name.

????:param?title_name:?The?name?of?the?title?you?want?to?insert
????"""
????font_?=?style_list['Heading1']
????font_.fontName?=?'simfang'
????font_.fontSize?=?18
????font_.leading?=?50
????font_.textColor?=?colors.green
????font_.alignment?=?1
????font_.bold?=?True
????return?Paragraph(title_name,?font_)

2、插入PDF小標(biāo)題

小標(biāo)題設(shè)置字體樣式對象為Normal,字體顏色為紅色,大小為15并且不加粗。

def?insert_lettle_title(lettle_name=None):
????"""
????:param?lettle_name:?The?name?of?the?lettle?you?want?to?insert
????"""
????font_?=?style_list['Normal']
????font_.fontName?=?'simfang'
????font_.fontSize?=?15
????font_.leading?=?30
????font_.textColor?=?colors.red
????return?Paragraph(lettle_name,?font_)

3、插入普通段落文本

普通文本設(shè)置字體樣式對象為Normal,字體顏色為默認,大小為12并且不加粗,開啟自動換行模式。

def?insert_text(text=None):
????"""
????>?This?function?inserts?text?into?the?current?document

????:param?text:?The?text?to?insert
????"""
????font_?=?style_list['Normal']
????font_.fontName?=?'simfang'
????font_.fontSize?=?12
????font_.wordWrap?=?'CJK'
????font_.alignment?=?0
????font_.firstLineIndent?=?32
????font_.leading?=?25
????return?Paragraph(text,?font_)

4、插入PDF圖片

將圖片插入到PDF文檔對象中比較簡單,只需要設(shè)置需要插入圖片的本地路徑即可。

def?insert_image(image_path=None):
????"""
????>?This?function?inserts?an?image?into?the?notebook

????:param?image_path:?The?path?to?the?image?you?want?to?insert
????"""
????img?=?Image(image_path)
????img.drawWidth?=?5?*?cm
????img.drawHeight?=?8?*?cm
????return?img

5、插入PDF表格

插入表格時,表格的格式可以根據(jù)自己的喜好設(shè)置表格的標(biāo)題、字體樣式、字體大小以及是否需要合并等參數(shù)來控制需要插入的表格對象。

def?insert_table(*args):
????"""
????It?inserts?a?table?into?the?database.
????"""
????col_width?=?120
????style?=?[
????????('FONTNAME',?(0,?0),?(-1,?-1),?'simfang'),??#?字體
????????('FONTSIZE',?(0,?0),?(-1,?0),?12),??#?第一行的字體大小
????????('FONTSIZE',?(0,?1),?(-1,?-1),?10),??#?第二行到最后一行的字體大小
????????('BACKGROUND',?(0,?0),?(-1,?0),?'#d5dae6'),??#?設(shè)置第一行背景顏色
????????('ALIGN',?(0,?0),?(-1,?-1),?'CENTER'),??#?第一行水平居中
????????('ALIGN',?(0,?1),?(-1,?-1),?'LEFT'),??#?第二行到最后一行左右左對齊
????????('VALIGN',?(0,?0),?(-1,?-1),?'MIDDLE'),??#?所有表格上下居中對齊
????????('TEXTCOLOR',?(0,?0),?(-1,?-1),?colors.darkslategray),??#?設(shè)置表格內(nèi)文字顏色
????????('GRID',?(0,?0),?(-1,?-1),?0.5,?colors.grey),??#?設(shè)置表格框線為grey色,線寬為0.5
????]
????table?=?Table(args,?colWidths=col_width,?style=style)
????return?table

上述就是PDF文檔中常用的對象,最后通過添加對應(yīng)的內(nèi)容參數(shù)即可生成PDF文檔并保存到本地磁盤當(dāng)中。

#?A?special?variable?in?Python?that?evaluates?to?`True`?if?the?module?is?being?run?as?the?main?program.
if?__name__?==?'__main__':
????pdf_?=?list()

????pdf_.append(insert_full_title('數(shù)據(jù)測試報告'))
????pdf_.append(insert_text(
????????'Python 是一門編程語言。?您可以在服務(wù)器上使用 Python 來創(chuàng)建 Web 應(yīng)用程序。通過實例學(xué)習(xí)?我們的 TIY 編輯器使學(xué)習(xí) Python 變得簡單,它能夠同時顯示代碼和結(jié)果。?'))
????pdf_.append(insert_image('./excle源數(shù)據(jù).png'))
????pdf_.append(insert_lettle_title('數(shù)據(jù)內(nèi)容展示:'))
????data?=?[
????????('職位名稱',?'平均薪資',?'較上年增長率'),
????????('數(shù)據(jù)分析師',?'18.5K',?'25%'),
????????('高級數(shù)據(jù)分析師',?'25.5K',?'14%'),
????????('資深數(shù)據(jù)分析師',?'29.3K',?'10%')
????]
????pdf_.append(insert_table(*data))

????doc?=?SimpleDocTemplate('測試報告.pdf',?pagesize=letter)
????doc.build(pdf_)

到此這篇關(guān)于Python自動化辦公之生成PDF報告詳解的文章就介紹到這了,更多相關(guān)Python生成PDF報告內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 自然語言處理NLP TextRNN實現(xiàn)情感分類

    自然語言處理NLP TextRNN實現(xiàn)情感分類

    這篇文章主要為大家介紹了自然語言處理NLP TextRNN實現(xiàn)情感分類示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • Python使用pymeter操作JMeter的教程詳解

    Python使用pymeter操作JMeter的教程詳解

    pymeter?是一個?Python?庫,它可以以編程方式創(chuàng)建和運行?JMeter?測試計劃,下面就跟隨小編一起來看看Python如何使用pymeter操作JMeter的吧
    2024-01-01
  • python如何實時獲取tcpdump輸出

    python如何實時獲取tcpdump輸出

    這篇文章主要介紹了python如何實時獲取tcpdump輸出,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-09-09
  • python collections模塊的使用

    python collections模塊的使用

    這篇文章主要介紹了python collections模塊的使用,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-10-10
  • python實現(xiàn)錄音功能(可隨時停止錄音)

    python實現(xiàn)錄音功能(可隨時停止錄音)

    這篇文章主要為大家詳細介紹了python實現(xiàn)錄音功能,可隨時停止錄音,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Python輸入若干整數(shù)求和方式

    Python輸入若干整數(shù)求和方式

    這篇文章主要介紹了Python輸入若干整數(shù)求和方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python常用數(shù)據(jù)分析模塊原理解析

    Python常用數(shù)據(jù)分析模塊原理解析

    這篇文章主要介紹了Python常用數(shù)據(jù)分析模塊原理解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • Django 實現(xiàn)購物車功能的示例代碼

    Django 實現(xiàn)購物車功能的示例代碼

    這篇文章主要介紹了Django 實現(xiàn)購物車功能的示例代碼,實現(xiàn)了刪除產(chǎn)品和顯示購物車的一系列購物車的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • python實現(xiàn)飛機大戰(zhàn)(面向過程)

    python實現(xiàn)飛機大戰(zhàn)(面向過程)

    這篇文章主要為大家詳細介紹了python面向過程實現(xiàn)飛機大戰(zhàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • python 利用openpyxl讀取Excel表格中指定的行或列教程

    python 利用openpyxl讀取Excel表格中指定的行或列教程

    這篇文章主要介紹了python 利用openpyxl讀取Excel表格中指定的行或列教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02

最新評論