色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

reportlab如何輸入Python的第三方庫

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 作者:馬哥Linux運維 ? 2022-08-08 10:35 ? 次閱讀

reportlab是Python的一個標準庫,可以畫圖、畫表格、編輯文字,最后可以輸出PDF格式。它的邏輯和編輯一個word文檔或者PPT很像。有兩種方法:

1)建立一個空白文檔,然后在上面寫文字、畫圖等;

2)建立一個空白list,以填充表格的形式插入各種文本框、圖片等,最后生成PDF文檔。

因為需要產生一份給用戶看的報告,里面需要插入圖片、表格等,所以采用的是第二種方法。

安裝第三方庫

reportlab輸入Python的第三方庫,使用前需要先安裝:pip install reportlab

模塊導入

提前導入相關內容,并且注冊字體。(注冊字體前需要先準備好字體文件)

fromreportlab.pdfbaseimportpdfmetrics#注冊字體
fromreportlab.pdfbase.ttfontsimportTTFont#字體類
fromreportlab.platypusimportTable,SimpleDocTemplate,Paragraph,Image#報告內容相關類
fromreportlab.lib.pagesizesimportletter#頁面的標志尺寸(8.5*inch,11*inch)
fromreportlab.lib.stylesimportgetSampleStyleSheet#文本樣式
fromreportlab.libimportcolors#顏色模塊
fromreportlab.graphics.charts.barchartsimportVerticalBarChart#圖表類
fromreportlab.graphics.charts.legendsimportLegend#圖例類
fromreportlab.graphics.shapesimportDrawing#繪圖工具
fromreportlab.lib.unitsimportcm#單位:cm

#注冊字體(提前準備好字體文件,如果同一個文件需要多種字體可以注冊多個)
pdfmetrics.registerFont(TTFont('SimSun','SimSun.ttf'))

封裝不同內容對應的函數

創建一個Graphs類,通過不同的靜態方法提供不同的報告內容,包括:標題、普通段落、圖片、表格和圖表。函數中的相關數據目前絕大多數都是固定值,可以根據情況自行設置成相關參數

classGraphs:
#繪制標題
@staticmethod
defdraw_title(title:str):
#獲取所有樣式表
style=getSampleStyleSheet()
#拿到標題樣式
ct=style['Heading1']
#單獨設置樣式相關屬性
ct.fontName='SimSun'#字體名
ct.fontSize=18#字體大小
ct.leading=50#行間距
ct.textColor=colors.green#字體顏色
ct.alignment=1#居中
ct.bold=True
#創建標題對應的段落,并且返回
returnParagraph(title,ct)

#繪制小標題
@staticmethod
defdraw_little_title(title:str):
#獲取所有樣式表
style=getSampleStyleSheet()
#拿到標題樣式
ct=style['Normal']
#單獨設置樣式相關屬性
ct.fontName='SimSun'#字體名
ct.fontSize=15#字體大小
ct.leading=30#行間距
ct.textColor=colors.red#字體顏色
#創建標題對應的段落,并且返回
returnParagraph(title,ct)

#繪制普通段落內容
@staticmethod
defdraw_text(text:str):
#獲取所有樣式表
style=getSampleStyleSheet()
#獲取普通樣式
ct=style['Normal']
ct.fontName='SimSun'
ct.fontSize=12
ct.wordWrap='CJK'#設置自動換行
ct.alignment=0#左對齊
ct.firstLineIndent=32#第一行開頭空格
ct.leading=25
returnParagraph(text,ct)

#繪制表格
@staticmethod
defdraw_table(*args):
#列寬度
col_width=120
style=[
('FONTNAME',(0,0),(-1,-1),'SimSun'),#字體
('FONTSIZE',(0,0),(-1,0),12),#第一行的字體大小
('FONTSIZE',(0,1),(-1,-1),10),#第二行到最后一行的字體大小
('BACKGROUND',(0,0),(-1,0),'#d5dae6'),#設置第一行背景顏色
('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),#設置表格內文字顏色
('GRID',(0,0),(-1,-1),0.5,colors.grey),#設置表格框線為grey色,線寬為0.5
#('SPAN',(0,1),(0,2)),#合并第一列二三行
#('SPAN',(0,3),(0,4)),#合并第一列三四行
#('SPAN',(0,5),(0,6)),#合并第一列五六行
#('SPAN',(0,7),(0,8)),#合并第一列五六行
]
table=Table(args,colWidths=col_width,style=style)
returntable

#創建圖表
@staticmethod
defdraw_bar(bar_data:list,ax:list,items:list):
drawing=Drawing(500,250)
bc=VerticalBarChart()
bc.x=45#整個圖表的x坐標
bc.y=45#整個圖表的y坐標
bc.height=200#圖表的高度
bc.width=350#圖表的寬度
bc.data=bar_data
bc.strokeColor=colors.black#頂部和右邊軸線的顏色
bc.valueAxis.valueMin=5000#設置y坐標的最小值
bc.valueAxis.valueMax=26000#設置y坐標的最大值
bc.valueAxis.valueStep=2000#設置y坐標的步長
bc.categoryAxis.labels.dx=2
bc.categoryAxis.labels.dy=-8
bc.categoryAxis.labels.angle=20
bc.categoryAxis.categoryNames=ax

#圖示
leg=Legend()
leg.fontName='SimSun'
leg.alignment='right'
leg.boxAnchor='ne'
leg.x=475#圖例的x坐標
leg.y=240
leg.dxTextSpace=10
leg.columnMaximum=3
leg.colorNamePairs=items
drawing.add(leg)
drawing.add(bc)
returndrawing

#繪制圖片
@staticmethod
defdraw_img(path):
img=Image(path)#讀取指定路徑下的圖片
img.drawWidth=5*cm#設置圖片的寬度
img.drawHeight=8*cm#設置圖片的高度
returnimg

生成報告

if__name__=='__main__':
#創建內容對應的空列表
content=list()

#添加標題
content.append(Graphs.draw_title('數據分析就業薪資'))

#添加圖片
content.append(Graphs.draw_img('抗疫必勝.png'))

#添加段落文字
content.append(Graphs.draw_text('眾所周知,大數據分析師崗位是香餑餑,近幾年數據分析熱席卷了整個互聯網行業,與數據分析的相關的崗位招聘、培訓數不勝數。很多人前赴后繼,想要參與到這波紅利當中。那么數據分析師就業前景到底怎么樣呢?'))
#添加小標題
content.append(Graphs.draw_title(''))
content.append(Graphs.draw_little_title('不同級別的平均薪資'))
#添加表格
data=[
('職位名稱','平均薪資','較上年增長率'),
('數據分析師','18.5K','25%'),
('高級數據分析師','25.5K','14%'),
('資深數據分析師','29.3K','10%')
]
content.append(Graphs.draw_table(*data))

#生成圖表
content.append(Graphs.draw_title(''))
content.append(Graphs.draw_little_title('熱門城市的就業情況'))
b_data=[(25400,12900,20100,20300,20300,17400),(15800,9700,12982,9283,13900,7623)]
ax_data=['BeiJing','ChengDu','ShenZhen','ShangHai','HangZhou','NanJing']
leg_items=[(colors.red,'平均薪資'),(colors.green,'招聘量')]
content.append(Graphs.draw_bar(b_data,ax_data,leg_items))

#生成pdf文件
doc=SimpleDocTemplate('report.pdf',pagesize=letter)
doc.build(content)

生成報告的結果如下:

aa37216a-1593-11ed-ba43-dac502259ad0.png

審核編輯:彭靜

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4338

    瀏覽量

    62746
  • PDF
    PDF
    +關注

    關注

    1

    文章

    169

    瀏覽量

    33735
  • python
    +關注

    關注

    56

    文章

    4799

    瀏覽量

    84817

原文標題:Python生成圖文并茂的PDF報告

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    EE-303:將VisualDSP線程安全第三方RTOS配合使用

    電子發燒友網站提供《EE-303:將VisualDSP線程安全第三方RTOS配合使用.pdf》資料免費下載
    發表于 01-07 14:09 ?0次下載
    EE-303:將VisualDSP線程安全<b class='flag-5'>庫</b>與<b class='flag-5'>第三方</b>RTOS配合使用

    第三方檢測機構該如何提升核心競爭力?

    在國家“一帶一路”和“智能制造2025”等政策的引領下,面對競爭日益激烈的國際環境,作為全球最大的制造業國家,中國的檢測行業正經歷著迅猛的發展,成為全球增長最快、潛力最大的市場之一。 第三方檢測逐漸
    的頭像 發表于 12-17 15:44 ?149次閱讀
    <b class='flag-5'>第三方</b>檢測機構該如何提升核心競爭力?

    鴻蒙Flutter實戰:05-使用第三方插件

    使用的第三方插件,其底層以的沒有適配鴻蒙,則需要通過overrider配置其鴻蒙化的替代插件,否則會在運行時報錯。如下面所示: ```yaml dependency_overrides: # ohos
    發表于 10-22 21:54

    瑞芯微RK3566鴻蒙開發板Android11修改第三方輸入法為默認輸入

    本文適用于觸覺智能所有支持Android11系統的開發板修改第三方輸入法為默認輸入法。本次使用的是觸覺智能的Purple Pi OH鴻蒙開源主板,搭載了瑞芯微RK3566芯片,類樹莓派設計,是Laval官方社區主薦的一款鴻蒙開發
    的頭像 發表于 09-24 09:43 ?482次閱讀
    瑞芯微RK3566鴻蒙開發板Android11修改<b class='flag-5'>第三方</b><b class='flag-5'>輸入</b>法為默認<b class='flag-5'>輸入</b>法

    維天地低代碼開發平臺助力第三方質檢行業數據可視化

    第三方檢驗是由獨立于買賣雙方利益之外的第三方機構(例如專業的監督檢驗機構)執行的,這些機構以公正、公平、權威的非當事人身份,依據雙方共同認可的法律、標準和合同等進行商品的符合性檢驗和認證活動
    的頭像 發表于 08-09 13:59 ?294次閱讀
    <b class='flag-5'>三</b>維天地低代碼開發平臺助力<b class='flag-5'>第三方</b>質檢行業數據可視化

    請問esp8266會開放使用第三方云服務器嗎?

    如題,esp8266會開放使用第三方云服務器嗎,如百度,阿里云服務器?
    發表于 07-12 11:40

    是否有可能在支持gdb的第三方集成開發環境中使用DAS配置調試?

    是否有可能在支持 gdb 的第三方集成開發環境中使用 DAS 配置調試?
    發表于 07-02 07:29

    微軟或將開放Xbox主機授權給第三方廠商

    據悉,5 月 26 日,知名媒體 Windows Central 的編輯 Jez Corden 揭露了微軟即將遵循第三方手柄流程,允許在其 XBOX 主機上引入第三方產品。
    的頭像 發表于 05-27 15:18 ?675次閱讀

    MacPaw將在歐盟成員國推出第三方應用商店Setapp

    5月14日,MacPaw正式宣布將在今年5月14日在歐盟成員國面向蘋果iPhone推出第三方應用商城Setapp。自今年2月起,MacPaw已著手籌備該平臺。S
    的頭像 發表于 05-14 10:14 ?393次閱讀

    谷歌開放ZenDeviceEffects API,助第三方應用實現睡前屏幕管理

    據報道,谷歌近日在安卓 15 開發者預覽版 2 中推出了全新 ZenDeviceEffects API,允許第三方應用訪問數字健康的就寢模式功能。
    的頭像 發表于 05-08 16:41 ?503次閱讀

    Labview如何內嵌操作第三方EXE程序!

    自己在網上搜了下相關資料,能把第三方EXE內嵌進入容器里,但是有個問題,這個第三方軟件必須手動拖到容器正中間,手動最大化。請問有什么方法可以自動實現嗎? 下圖是我內嵌的POLL 軟件。如圖!
    發表于 04-18 14:26

    鴻蒙OS開發學習:【第三方調用】

    在Stage模型中,如何調用已經上架到[三方中心]的社區和項目內創建的本地
    的頭像 發表于 04-14 11:34 ?930次閱讀
    鴻蒙OS開發學習:【<b class='flag-5'>第三方</b><b class='flag-5'>庫</b>調用】

    微軟或將引入第三方數字游戲商店至Xbox平臺

    微軟選擇引入這些第三方游戲平臺,一面可以增加自身擁有的硬件資源和服務優勢;另一面,也是為了吸引那些在電腦端能夠自由選擇游戲購買渠道的游戲用戶。據悉,此前的Xbox系列產品都是只內置自家的商城。
    的頭像 發表于 03-27 15:51 ?503次閱讀

    Meta Quest頭顯將支持多款安卓第三方應用并行

    Meta已悄然啟動了與此相關的功能,意味著Quest頭顯可同時操作多個第三方Android應用。在此之前,Quest對第三方Android應用有嚴格限制,用戶每次僅能打開一個,無法實現同屏幕并行多個第三方應用進程。
    的頭像 發表于 03-11 10:58 ?770次閱讀

    蘋果iOS 17.4版允許歐盟地區用戶使用第三方應用商店下載應用

    3月6日,蘋果正式推出iOS 17.4版本,首次符合歐州《數字市場法》規定,引入“第三方應用商店”選項,讓iPhone用戶能從非App Store處下載應用程序。
    的頭像 發表于 03-06 10:51 ?901次閱讀
    主站蜘蛛池模板: 4484在线观看视频| 国产成人精视频在线观看免费| 搞基福利社| 人妖和美女玩| 国产精品7777人妻精品冫| 午夜天堂AV久久久噜噜噜| 國產麻豆AVMDXMDX| 在线电影一区二区| 嫩草影院未满十八岁禁止入内| 超碰超碰视频在线观看| 丝瓜涩涩屋黄瓜香蕉丝瓜| 红尘影院在线观看| 18岁男人女人插孔| 日韩人妻少妇一区二区三区| 国产精品-区区久久久狼| 一本道无码字幕在线看| 男女牲交全过程免费播放| 国产AV精品白浆一区二| 亚洲男人97色综合久久久| 暖暖 免费 高清 日本视频大全| 鬼灭之刃花街篇免费樱花动漫| 亚洲AV精品一区二区三区不卡| 泷泽萝拉首部av| 国产成+人欧美+综合在线观看 | 91九色麻豆| 天上人间影院久久国产| 久久精品国产欧美| 国产AV果冻传奇麻豆| 在教室伦流澡到高潮HNP视频| 人妻互换免费中文字幕| 久久re热在线视频精6| 成人在线视频播放| 亚洲午夜久久久久中文字幕| 人人干人人看| 精品一卡2卡三卡4卡乱码精品视频 | 中文字幕人成人乱码亚洲影视S | 国产精品成人啪精品视频免费观看| 野花日本完整版在线观看免费高清| 日本人xxxⅹ18hd19hd| 久久全国免费久久青青小草| 国产精品久久久久永久免费看 |