Процесс завершен с кодом выхода -1073740791, пытающимся прочитать файлы Excel в python - PullRequest
0 голосов
/ 21 мая 2019

Я запрограммировал графический интерфейс для прочтения данных 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). Программа закрывается без какой-либо информации. Я понятия не имею, с чего начать. Если вам нужна дополнительная информация, просто дайте мне знать.

...