最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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非標準模塊reportlab就能滿足直接生成PDF報告的需要,由于是非標準庫需要使用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??#?頁面的標志尺寸(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標題

大標題設(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小標題

小標題設(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è)置表格的標題、字體樣式、字體大小以及是否需要合并等參數(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)文章

  • Pygame實戰(zhàn)之實現(xiàn)扎氣球游戲

    Pygame實戰(zhàn)之實現(xiàn)扎氣球游戲

    這篇文章主要為大家介紹了利用Python中的Pygame模塊實現(xiàn)的一個扎氣球游戲,文中的示例代碼講解詳細,對我們了解Pygame模塊有一定的幫助,感興趣的可以學(xué)習(xí)一下
    2021-12-12
  • Python學(xué)習(xí)筆記之json模塊和pickle模塊

    Python學(xué)習(xí)筆記之json模塊和pickle模塊

    json和pickle模塊是將數(shù)據(jù)進行序列化處理,并進行網(wǎng)絡(luò)傳輸或存入硬盤,下面這篇文章主要給大家介紹了關(guān)于Python學(xué)習(xí)筆記之json模塊和pickle模塊的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • python 實現(xiàn)兩個線程交替執(zhí)行

    python 實現(xiàn)兩個線程交替執(zhí)行

    這篇文章主要介紹了python 實現(xiàn)兩個線程交替執(zhí)行,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python一鍵生成核酸檢測日歷的操作代碼

    Python一鍵生成核酸檢測日歷的操作代碼

    這篇文章主要介紹了Python一鍵生成核酸檢測日歷,本文以深圳為例,結(jié)合實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • Python?第三方庫?openpyxl?的安裝過程

    Python?第三方庫?openpyxl?的安裝過程

    這篇文章主要介紹了Python?高效辦公第三方庫?openpyxl?的安裝,本文介紹了什么是庫及庫的分類,本文結(jié)合示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • python opencv進行圖像拼接

    python opencv進行圖像拼接

    這篇文章主要為大家詳細介紹了python opencv進行圖像拼接,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Python實現(xiàn)去除列表中重復(fù)元素的方法總結(jié)【7種方法】

    Python實現(xiàn)去除列表中重復(fù)元素的方法總結(jié)【7種方法】

    今天小編就為大家分享一篇關(guān)于Python實現(xiàn)去除列表中重復(fù)元素的方法總結(jié)【7種方法】,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Python 中使用 argparse 解析命令行參數(shù)

    Python 中使用 argparse 解析命令行參數(shù)

    這篇文章主要介紹了Python 中使用 argparse 解析命令行參數(shù),argparse 模塊是一個強大的命令行參數(shù)解析器,還有很多功能沒能在這里介紹。下面文化在哪個詳細介紹該內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • python django使用haystack:全文檢索的框架(實例講解)

    python django使用haystack:全文檢索的框架(實例講解)

    下面小編就為大家?guī)硪黄猵ython django使用haystack:全文檢索的框架(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Python基于當(dāng)前時間批量創(chuàng)建文件

    Python基于當(dāng)前時間批量創(chuàng)建文件

    這篇文章主要介紹了Python基于當(dāng)前時間批量創(chuàng)建文件,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05

最新評論

北流市| 永登县| 南投县| 延川县| 昌平区| 南江县| 仁怀市| 淮阳县| 富蕴县| 潮州市| 永济市| 土默特右旗| 涟水县| 平遥县| 宁德市| 商河县| 茶陵县| 竹溪县| 托克托县| 梨树县| 大邑县| 韶山市| 恩施市| 河间市| 青河县| 会昌县| 广东省| 中方县| 长子县| 惠水县| 镇宁| 江北区| 繁峙县| 铜陵市| 扎囊县| 西城区| 繁峙县| 宁海县| 湖北省| 花莲县| 永新县|