您好,登錄后才能下訂單哦!
今天小編給大家分享一下Python自動化辦公之怎么生成PDF報告的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
因為工作需要經常需要生成很多的PDF報告給客戶查看產品效果以及過程的講解。
每次都需要按照一定的格式的編寫文檔并生成PDF報告,這樣重復性的工作實在太累。
想著可以使用python生成一份給用戶看的報告,里面需要插入圖片、表格、文字說明等等。
使用第三方的python非標準模塊reportlab就能滿足直接生成PDF報告的需要,由于是非標準庫需要使用pip的方式安裝一下該模塊。
使用pip安裝reportlab模塊,支持生成PDF文檔。
pip install reportlab -i https://pypi.tuna.tsinghua.edu.cn/simple
若是在安裝過程中出現缺失C++環境導致構建失敗時,可以直接選擇使用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對象導入到當前的代碼塊中。
from reportlab.pdfbase import pdfmetrics # 注冊字體 from reportlab.pdfbase.ttfonts import TTFont # 字體類 from reportlab.platypus import Table, SimpleDocTemplate, Paragraph, Image # 報告內容相關類 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
模塊導入完成之后,第一步需要設置PDF文檔中使用到的字體,字體可以根據自己的喜好自行設置。
# Registering a font named 'simfang' with the file 'simfang.ttf'. pdfmetrics.registerFont(TTFont('simfang', 'simfang.ttf'))
我這里選擇的字體是simfang.ttf,關于windows系統中的默認字體可以下面的路徑中查看。
開發業務代碼之前,我們可以將公共的部分提到最外面,這里使用getSampleStyleSheet函數將獲取到所有的樣式表后面在其他地方也可以使用。
# Getting a list of styles that can be used in the document. style_list = getSampleStyleSheet()
大標題設置字體樣式對象為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_)
小標題設置字體樣式對象為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_)
普通文本設置字體樣式對象為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_)
將圖片插入到PDF文檔對象中比較簡單,只需要設置需要插入圖片的本地路徑即可。
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
插入表格時,表格的格式可以根據自己的喜好設置表格的標題、字體樣式、字體大小以及是否需要合并等參數來控制需要插入的表格對象。
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'), # 設置第一行背景顏色 ('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 ] table = Table(args, colWidths=col_width, style=style) return table
上述就是PDF文檔中常用的對象,最后通過添加對應的內容參數即可生成PDF文檔并保存到本地磁盤當中。
# 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('數據測試報告')) pdf_.append(insert_text( 'Python 是一門編程語言。 您可以在服務器上使用 Python 來創建 Web 應用程序。通過實例學習 我們的 TIY 編輯器使學習 Python 變得簡單,它能夠同時顯示代碼和結果。 ')) pdf_.append(insert_image('./excle源數據.png')) pdf_.append(insert_lettle_title('數據內容展示:')) data = [ ('職位名稱', '平均薪資', '較上年增長率'), ('數據分析師', '18.5K', '25%'), ('高級數據分析師', '25.5K', '14%'), ('資深數據分析師', '29.3K', '10%') ] pdf_.append(insert_table(*data)) doc = SimpleDocTemplate('測試報告.pdf', pagesize=letter) doc.build(pdf_)
以上就是“Python自動化辦公之怎么生成PDF報告”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。