Итак, я создал программу Python, которая позволяет пользователю добавлять данные в таблицу PYQT, используя различные параметры, однако я изо всех сил пытаюсь найти способ экспортировать их в электронную таблицу, в которой я хочу их сохранить. В связи с универсальностью программы, я должен иметь возможность указать начальную ячейку для таблицы, в которую нужно вставить ее. Я был в состоянии добавить таблицу в CSV-файл в предыдущей программе, но я не могу найти нигде, который может помочь с добавлением ее в электронную таблицу Excel.
К сожалению, это было бы легко сделать, если бы я не сделал ' я сначала помещаю его в таблицу PYQT, но мне нужно, чтобы пользователь мог просматривать и редактировать данные перед отправкой их в электронную таблицу.
Я использовал Openpyxl для других взаимодействий с электронными таблицами, и это было действительно хорошо, но я тоже не могу найти способ сделать это.
Буду признателен за любую помощь, и, если я пропустил пост, посвященный этой теме, пожалуйста, дайте мне знать!
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QWidget, QLineEdit, QVBoxLayout, QTableWidget, QTableWidgetItem
from openpyxl import *
import datetime
import calendar
class Deliver(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super(Deliver, self).__init__(parent)
self.initUI()
def initUI(self):
self.table_widget = DTabs(self)
self.setCentralWidget(self.table_widget)
class DTabs(QWidget):
def __init__(self, parent=Deliver):
super(QWidget, self).__init__(parent)
self.initUI()
self.linescan = QLineEdit(self)
self.linescan.move(20, 10)
self.linescan.resize(160, 30)
self.linescan.returnPressed.connect(self.handleScan)
self.subButton = QtWidgets.QPushButton('Submit', self)
self.subButton.clicked.connect(self.handleSubmit)
self.layout.addWidget(self.linescan)
self.layout.addWidget(self.subButton)
def initUI(self):
self.createTable()
self.layout = QVBoxLayout()
self.layout.addWidget(self.tableWidget)
self.setLayout(self.layout)
self.show()
def createTable(self):
self.tableWidget = QTableWidget()
self.tableWidget.setRowCount(0)
self.tableWidget.setColumnCount(3)
self.tableWidget.move(0, 0)
def handleScan(self):
numRows = self.tableWidget.rowCount()
self.tableWidget.insertRow(numRows)
self.tableWidget.setItem(numRows, 0, QTableWidgetItem(self.linescan.text()))
self.tableWidget.setItem(numRows, 1, QTableWidgetItem(str(1)))
self.linescan.clear()
def handleSubmit(self):
now = datetime.datetime.now()
month = calendar.month_name[now.month]
wb = load_workbook("{}.xlsx".format(now.year))
ws = wb["{} Deliveries".format(month)]
if ws.cell(row=1, column=1).value == None:
startcell = ws.cell(row=1, column=1)
else:
startcell= ws.cell(row=1, column=ws.max_column+1)
startcell.value = 'Submitted on:'
startc = startcell.column
ws.cell(row=1, column=startc+1).value = now.day
ws.cell(row=1, column=startc+2).value = now.time()
pastestartcell = ws.cell(row=2, column=startc)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
deliver = Deliver()
deliver.show()
sys.exit(app.exec_())