将SQL数据转换为QTextDocument,然后输出pdf

时间:2014-01-19 15:37:47

标签: python sqlite python-3.x pyqt pyqt5

我正在尝试添加一种将数据从sqlite3数据库导出到pdf文档的方法。在使用python和Qt编写快速gui编程的书中,它说我可以将QTextDocuments导出为pdf文件。但是它需要采用QTextDocument的形式。目前我一直试图将表格的一串标题作为测试获得pdf文档,但是当它运行空闲时只需重新启动。

    import sqlite3
    from PyQt5 import QtWidgets, QtCore, QtGui
    class Report(QtWidgets.QWidget):
        def __init__(self,text):
            super(Report,self).__init__()
            self.textArea = QTextEdit(self)
            self.cursor = QTextCursor(self.textArea.document())
            self.cursor.insertText(text)

    def createTextReport(fileName):
        headings = ('|%10s|'%'AssetID' + '|%40s|'%'Description' + '|%40s|'%'Room Description' + '|%5s|'%'Labelled' + '|%10s|'%'Condition')
        report = Report(headings)
        printer = QPrinter()
        printer.setPageSize(QPrinter.Letter)
        printer.setOutputFormat(QPrinter.PdfFormat)
        printer.setOutputFileName('C:/Users/Luke/Documents/A-Level-Work/A2/Computing/COMP 4/Program/report.pdf')
        report.print_(printer)


    fileName = 'C:/Users/Luke/Documents/A-Level-Work/A2/Computing/COMP 4/Program/test_database.db'

    createTextReport(fileName)

我想知道我哪里出错了,还有一种简单的方法可以将SQL查询中的数据转换为QTextDocument格式作为表格,这样我就不必手动格式化了。请用简单的术语解释,因为我的编程知识非常有限。

1 个答案:

答案 0 :(得分:1)

如果您的sqlite3模块中只有元组,那么您可以使用以下内容格式化数据:

myText = ''

for entry in conn.execute('SOME SQL QUERY'):
    myText += '|{:10s}| AssetID |{:40s}| Description |{:40s}| Room Description |{:5s}| Labelled |{:10s}| Condition'.format(*entry)
    myText += '\n'

然后,您可以将此文本提供给Report()对象。

使用this post