Я запрограммировал графический интерфейс для прочтения данных Excel и отображения значений. Я использую xlrd для этого. Я попробовал это для цикла for через постоянное количество строк и столбцов (я знаю, насколько велики данные), и он работает так, как должен. Я использую PyCharm для этого.
Следующим шагом должен быть цикл while, который может читать любые данные, независимо от их размера. По этой причине я пришел к мысли:
- Я проверяю, есть ли пустая строка или столбец
- Если между собой более 10 пустых строк или столбцов, программа должна прекратить выполнение цикла while
Проблема: мой метод setDatei () открывает файл и загружает значения каждой ячейки одновременно. Это работает для первого случая, только если я установил в качестве счетчика последнюю строку / столбец этого файла. Если выше только 1 число, программа вернет: «Процесс завершен с кодом выхода -1073740791 (0xC0000409)». То же самое происходит при попытке выполнить второй случай с циклом while.
Я пытался понять это:
Процесс завершен с кодом выхода -1073741571
или это:
Как решить проблему с размером стека в Visual Studio (запуск кодов C с большим массивом)
Но я думаю, что я не просто понял это.
Он должен работать на каждом компьютере, а не только на моем, поэтому изменение любых настроек компьютера нецелесообразно.
Дело 1: работает
def setDatei(self): #Programmauswahl
fileName, _ = QtWidgets.QFileDialog.getOpenFileName(None, "Waehle das Programm aus", "",
"Excel Files *.xlsx *.xls") # Frage nach Datei
if fileName: # Wenn der Benutzer eine Datei gibt
print(fileName)
self.setLine.setText(fileName) # zeigt den Dateinamen in der Leiste oben links
####Öffnet die Datei und lädt die Werte
workbook = xlrd.open_workbook(fileName)
worksheet = workbook.sheet_by_index(0)
# 16 Zeilen, 11 Spalten
n = 0
m = 0
for i in range(0, 16): # for-Schleife, um alle Zellen auszulesen und übertragen
m = 0
a = str(worksheet.cell(n, m).value)
for i in range(0, 11):
a = str(worksheet.cell(n, m).value)
self.tableWidget.setItem(n, m, QtWidgets.QTableWidgetItem(a))
m = m + 1
n = n + 1
Случай 2: не работает
def setDatei(self): #Programmauswahl
fileName, _ = QtWidgets.QFileDialog.getOpenFileName(None, "Waehle das Programm aus", "",
"Excel Files *.xlsx *.xls") # Frage nach Datei
if fileName: # Wenn der Benutzer eine Datei gibt
print(fileName)
self.setLine.setText(fileName) # zeigt den Dateinamen in der Leiste oben links
####Öffnet die Datei und lädt die Werte
workbook = xlrd.open_workbook(fileName)
worksheet = workbook.sheet_by_index(0)
lineThreshold = 10
columnThreshold = 10
row = 0
lineEmptyCounter = 0
while True:
col = 0
columnEmptyCounter = 0
lineEmpty = True
while True:
value = str(worksheet.cell(row, col).value)
if value is None:
columnEmptyCounter += 1
else:
lineEmpty = False
columnEmptyCounter = 0
self.tableWidget.setItem(row, col, QtWidgets.QTableWidgetItem(value))
if columnEmptyCounter >= columnThreshold:
break
else:
col = col + 1
if lineEmpty:
lineEmptyCounter += 1
else:
lineEmptyCounter = 0
if lineEmptyCounter >= lineThreshold:
break
else:
row = row+1
Процесс завершен с кодом выхода -1073740791 (0xC0000409). Программа закрывается без какой-либо информации. Я понятия не имею, с чего начать. Если вам нужна дополнительная информация, просто дайте мне знать.