2014-01-19 63 views
0

我想添加一種方法將數據從sqlite3數據庫導出到pdf文檔中。在使用python和Qt編寫的快速gui編程的書中,它說我可以將QTextDocuments作爲PDF文件導出。但是它需要以QTextDocument的形式。目前,我一直試圖爲表格獲取一串標題作爲測試,然而當它運行空閒時,只需重新啓動。將SQL數據轉換爲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

哪裏出問題了?代碼是否運行?你需要關於如何構建數據的指針嗎? –

+0

代碼運行但空閒重新啓動時它達到createTextReport(文件名),而不提供錯誤。我想知道是否有一些將SQL轉換爲QTextDocument的模塊。 – user1921942

+0

也在有人問沒有文件被創建。 – user1921942

回答

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

+0

感謝您使用SQL對文本的幫助!你有什麼想法,爲什麼文本到pdf部分的代碼將無法正常工作? – user1921942

+0

我不完全確定。我最近有點忙。 –

相關問題