我正在尝试添加一种将数据从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格式作为表格,这样我就不必手动格式化了。请用简单的术语解释,因为我的编程知识非常有限。
答案 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。