Как я могу перебирать листы Excel, имена которых не указаны явно с помощью XlsxWriter? - PullRequest
0 голосов
/ 10 марта 2020

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

Примечание, в В следующем примере я предоставляю список c, но моя программа динамически создает список имен на основе содержимого файла CSV: число имен, добавляемых в список, варьируется от 1 до 60 , в зависимости от рассматриваемого анализа.

import xlsxwriter

workbook = xlsxwriter.Workbook('C:\\Users\\Jabocus\\Desktop\\Workbook.xlsx')
list = ["a", "b", "c", "d"]

for x in list:
    worksheet = workbook.add_worksheet(x)
    worksheet.write("A1", "Hello!")

workbook.close()

Если я запускаю программу, как показано выше, я получаю SyntaxError, и я Python указывает на workbook.close () в качестве источника проблемы .

Однако, если я исключаю строку, в которой я пытаюсь написать «Привет!» в ячейку A1 на каждом листе программа запускается так, как я ожидал: в результате я получил Workbook.xlsx на рабочем столе, и у него есть 4 листа с именами a, b, c и d.

Форма для l oop показалась мне хорошим выбором, потому что моей программе нужно будет обрабатывать различные форматы CSV (я бы лучше написал одну программу, которая может обрабатывать данные из каждого анализа в моей лаборатории, чем программу для каждого анализа). ).

Я надеялся, что при использовании worksheet.write () так, как я это сделал, Python узнает, что я хочу записать в только что созданный лист (т.е. я думал, что лист будет действовать как имя для каждого рабочего листа во время каждой итерации l oop, несмотря на то, что я явно называю каждый рабочий лист чем-то новым) как я пытаюсь ссылаться на каждый рабочий лист на шаге write () (потому что я не даю ни одному из объектов рабочего листа явное имя), но я не знаю, как действовать дальше. Как можно решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 10 марта 2020

Я не совсем уверен, что не так с вашим кодом, но я могу сказать вам следующее:

Я точно скопировал ваш код (за исключением изменения пути к моему рабочему столу), и он работал нормально.

Я полагаю, что ваша проблема может быть одной из трех:

  1. У вас глючная / старая версия XlsxWriter
  2. У вас есть файл с именем Workbook.xlsx на рабочем столе уже поврежден или вызывает некоторые проблемы (откройте в другой программе.)
  3. У вас есть код, отличный от того, что вы опубликовали.

Для учета всех этих возможности, я бы порекомендовал вам:

  1. Переустановить XlsxWriter:

    В командной строке запустить pip uninstall XlsxWriter, а затем pip install XlsxWriter

  2. Изменить имя открываемой книги:

    workbook = xlsxwriter.Workbook('C:\\Users\\Jabocus\\Desktop\\Workbook2.xlsx')

  3. Попробуйте запустить код, который вы выложили точно , затем постепенно добавляйте к нему, пока он не перестанет работать.

0 голосов
/ 10 марта 2020

Вы пробовали что-то вроде worksheet.write(0, 0, 'Hello') вместо worksheet.write('A1', 'Hello')

...