如何将Panda DataFrame或QTableWidget转换成Pdf?

2024-04-24 12:46:11 发布

您现在位置:Python中文网/ 问答频道 /正文

如何将Panda DataFrame或QTableWidget转换为Pdf?你知道吗

我在QtableWidget(PyQt5)中列出了我的Sqlite3数据库产品,并在panda数据框中列出了它们。如何将其中一个转换为PDF?你知道吗

我想生成一个产品报告,这些方法中的任何一种都适合我。我尝试了很多东西,我看到的堆栈和谷歌,但没有任何工作。你知道吗

数据帧函数

    def gerarRelatorio(self):
        self.banco = sqlite3.connect ( 'Vendas.db' )
        self.cursor = banco.cursor ( )
        engine = create_engine('sqlite:///Vendas.db')
        df = pd.read_sql_table("Produtos", engine)
        print(df)

QtableWidget函数

    def LoadDatabase(self):
        self.banco = sqlite3.connect ( 'Vendas.db' )
        self.cursor = banco.cursor ( )
        query = "SELECT * FROM Produtos"
        result = self.banco.execute ( query )
        self.listaprodutos.setRowCount ( 0 )
        for row_number, row_data in enumerate ( result ):
            self.listaprodutos.insertRow ( row_number )
            for colum_number, data in enumerate ( row_data ):
                self.listaprodutos.setItem(row_number, colum_number, QtWidgets.QTableWidgetItem(str(data)))

Tags: 数据函数selfnumberdbdata产品def
1条回答
网友
1楼 · 发布于 2024-04-24 12:46:11

可以使用以下方法将PDF转换为PDF:

from PyQt5 import QtGui, QtWidgets
from PyQt5.QtPrintSupport import QPrinter
from PyQt5.QtWidgets import QApplication
from PyQt5.QtGui import QTextDocument
import sys
import pandas as pd

df = pd.DataFrame({'test1':[1],'test2':[2]}) #the dataframe
html = df.to_html()

app = QApplication(sys.argv)
out = QTextDocument()
out.setHtml(html)
printer = QPrinter()
printer.setOutputFileName("test.pdf")
printer.setOutputFormat(QPrinter.PdfFormat)
printer.setPageSize(QPrinter.A4)
printer.setPageMargins(15, 15, 15, 15, QPrinter.Millimeter)
out.print_(printer)

当然,你必须玩弄pdf格式,使它看起来像你想要的

虽然对PyQt5没有太多的经验,但是如果您已经在QtableWidget中存储了东西,那么您可能会以某种方式跳过df/html部分

相关问题 更多 >