Python: запись списка в строку в Excel - PullRequest
0 голосов
/ 13 января 2020

Я пытаюсь прочитать данные из текстового файла, создать одну длинную строку из всего, что содержится в этом текстовом файле, и разделить ее на пробелы. Затем я пытаюсь отправить этот список, разделенный пробелом, на printStringArray и распечатать его на листе Excel. Я не могу понять, как отследить, в какую строку и столбец должны быть введены данные.

rowNum = 1

def createStringArray(theFilePath):
    theFinalString = ""
    with open(theFilePath) as file_in:
        for line in file_in:
            lineToString = str(line)
            theCompleteString = lineToString.split()
            printStringArray(theCompleteString)


def printStringArray(theStringArray):
    with xlsxwriter.Workbook('testingThis.xlsx') as workbook:
        worksheet = workbook.add_worksheet()
        colNum = 1
        global rowNum
        for data in theStringArray:
            worksheet.write(rowNum, colNum, data)
            colNum = colNum + 1
    rowNum = rowNum + 1 

РЕДАКТИРОВАНИЕ:

def printStringArray(theStringArray):
    with xlsxwriter.Workbook('testingThis.xlsx') as workbook:
        worksheet = workbook.add_worksheet()
        colNum = 0
        global rowNum
        for data in theStringArray:
            worksheet.write(rowNum, colNum, str(data))
            print(rowNum)
            print(colNum)
            print(data)
            colNum = colNum + 1
    rowNum = rowNum + 1

Я добавил prints в чтобы понять, в чем я ошибался, но все числа - это именно то, что я хочу, чтобы они были для rowNum, colNum и data. Сейчас он печатает только самую последнюю строку. enter image description here

РЕДАКТИРОВАТЬ # 2

rowNum = 0
with xlsxwriter.Workbook('testingThis.xlsx') as workbook:
    worksheet = workbook.add_worksheet()

def createStringArray(theFilePath):
    theFinalString = ""
    with open(theFilePath) as file_in:
        for line in file_in:
            lineToString = str(line)
            theCompleteString = lineToString.split()
            printStringArray(theCompleteString)
            for aString in theCompleteString:
                theFinalString = theFinalString + aString + "--"
    print(theFinalString)


def printStringArray(theStringArray):
    colNum = 0
    global rowNum
    worksheet.write(15, 15, "Aapple")
    for data in theStringArray:
        worksheet.write(rowNum, colNum, str(data))
        print(rowNum)
        print(colNum)
        print(data)
        colNum = colNum + 1
    rowNum = rowNum + 1

1 Ответ

0 голосов
/ 14 января 2020

Вот мой attpemt для чтения текстового файла и записи содержимого на лист Excel, может быть, это может помочь.

Я использую функцию write_row () , чтобы написать список строк в ряд. Таким образом, мне не нужно заботиться о правильных номерах столбцов.

import xlsxwriter

#  read textfile line by line
with open(path2txt, 'r') as txtfile:
    lines_raw = txtfile.readlines()

#  remove newline and whitespace on every line
lines = [line.strip() for line in lines_raw]

#  write lines to worksheet, 
#  here we use "write_row()" to write the list of words column by column
with xlsxwriter.Workbook('test.xlsx') as workbook:
    sheet = workbook.add_worksheet()
    row, col = 0, 0
    for line in lines:
        parts = line.split()
        if len(parts)>0:  # only write nonempty lines
            sheet.write_row(row, col, parts)
            row += 1
...