用jupyter notebook寫python把dataframe內容匯出到pdf檔的方法


為什麼要寫這篇文章?
因為原本以前的套件pdfkit和wkhtmltopdf很簡單就可以做,但後來發現因為版本更新的關係,發生無法解決的錯誤,故寫下這篇文章給大家參考。

python版本3.7
原本使用套件pdfkit和wkhtmltopdf
照網路上大量文件的說法,應該可以順利產出,但是並沒有。

先做錯誤示範如下:

(用截圖是因為不想大家直接copy, 因為是錯誤示範)
(最下面有正確做法,有提供程式碼給大家copy)

先編一個dataframe,並且確認結果是一張表格

接下來要先裝pdfkit, 記得在jupyter底下要這樣下指令才能裝喔:

然後開始執行產出PDF的語法
先產生html檔,這部分是沒問題的

然後就看到以下錯誤:

我們用wkhtmltopdf看看,先來安裝


執行程式

也是一個莫名奇妙的錯誤

最後找到PyQt4,其實是要用PyQt5,4版連裝都裝不起來

提供可複製貼上的程式碼
# pyqt4不能裝,要改裝pyqt5
import sys
!{sys.executable} -m pip install pyqt5
無論如何,算是有裝成功

來執行程式吧!

from PyQt5.QtGui import QTextDocument
from PyQt5.QtWidgets import QApplication
from PyQt5.QtPrintSupport import QPrinter
import sys
app = QApplication(sys.argv)


doc = QTextDocument()
location = "foo.html"
html = open(location).read()
doc.setHtml(html)


printer = QPrinter()
printer.setOutputFileName("foo.pdf")
printer.setOutputFormat(QPrinter.PdfFormat)
printer.setPageSize(QPrinter.A4)
printer.setPageMargins(15, 15, 15, 15, QPrinter.Millimeter)


doc.print_(printer)
print("done!")
執行完會秀出一個"done!"訊息。

打開pdf檔
終於成功了!

給各位參考,簡單說,用PyQt5就對了!










留言