![](/img/trans.png)
[英]how to save the data entered in the textbox in excel using openpyxl
[英]how to save qtablewidget data into excel file using openpyxl
我有一個包含數據的 qtablewidet,當用戶單擊導出按鈕時,將出現一個對話框,要求將文件名另存為 excel,我如何使用 openpyxl 做到這一點?
這是我的代碼
self.exportbtn.clicked.connect(self.export)
def export(self):
try:
filename = QtWidgets.QFileDialog.getSaveFileName(self, 'Save file', '','Excel files(*.xlsx)')
wb = Workbook()
sheet = wb.active
for column in range(self.tableWidget.columnCount()):
for row in range(self.tableWidget.rowCount()):
try:
text = str(self.tableWidget.item(row, column).text())
sheet.write(row, column, text)
wb.save(filename)
except Exception as e:
print("Error Writing file.")
except Exception as e:
print("Error Saving file.")
當我嘗試從對話框中單擊保存時,現在的 output 就是這個
我如何使用 openpyxl 將包括標題的整個數據從 qtablewidget 保存到 excel 文件?
更新:我現在編輯了我的代碼並且我能夠創建文件但是來自 qtablewidget 的數據仍然沒有寫入 excel 文件
def export(self):
filename, filter = QtWidgets.QFileDialog.getSaveFileName(self, 'Save file', '','Excel files (*.xlsx)')
wb = Workbook()
sheet = wb.active
if not filename:
for column in range(self.tableWidget.columnCount()):
for row in range(self.tableWidget.rowCount()):
try:
text = str(self.tableWidget.item(row, column).text())
sheet.write(row, column, text)
except AttributeError:
pass
wb.save(filename)
我嘗試從 qtablewidget 打印數據,它顯示,它只是沒有保存在 excel 文件中,是否還缺少一些東西?
因此,您的行 wb.save(filename) 在您的 for 循環中,因此每個循環都保存了相同的文件名。
將該行移到外部縮進的 for 循環之后,因此只保存一次。
另外,請確保文件名不存在,否則您可能會看到彈出對話框“您確定嗎?” 然后你需要強制保存它。
QFileDialog 的幾乎所有 static 方法( getExistingDirectory()
和getExistingDirectoryUrl()
除外)都以(file(s), filter)
的形式返回一個元組。
對於getOpenFileNames()
(注意復數),第一個 object 是指示所選文件的字符串列表,在其他情況下,它是字符串形式的文件路徑或 URL。
請注意,如果對話框被取消,則文件字符串(或列表)為空,因此您應該在繼續寫入文件之前檢查一下:
filename, filter = QtWidgets.QFileDialog.getSaveFileName(
self, 'Save file', '','Excel files(*.xlsx)')
if not filename:
return
# ...
此外,您不應嘗試在 for 循環的每個循環中保存文件。
雖然 Qt 中 99% 的函數在 PyQt 中的行為方式相同,但這並不總是正確的,尤其是對於 C++ 使用引用變量的情況。 每當您不確定 function 或從中獲得意外行為時,您可以查看PyQt 文檔(返回的類型在 ZC1C425268E68385D1AB5074C17 的末尾指定或只調用help(class.function)
之后的定義)。 help(class.function)
在 python 控制台中。 一個更簡單的解決方案是只print
返回的值,您會自己看到。
def imag_Export_Report(self):
self.cur.execute('''SELECT name, phone, image FROM photo''')
rows = self.cur.fetchall()
excel_file = QtWidgets.QFileDialog.getSaveFileName(self, "save file",'./','Excel Files (*.xlsx)')
workbook = xlsxwriter.Workbook(excel_file[0])
sheet1 = workbook.add_worksheet()
sheet1.write(0, 0, 'name ')
sheet1.write(0, 1, ' phone')
sheet1.write(0, 2, 'image ')
row_number = 1
for row in rows:
column_number = 0
for item in row:
sheet1.write(row_number, column_number, str(item))
column_number += 1
row_number += 1
workbook.close()
self.con.commit()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.