How to write to an Excel spreadsheet using Python?
Как выполнить запись в электронную таблицу Excel с помощью Python?
Мне нужно записать некоторые данные из моей программы в электронную таблицу Excel. Я поискал в Интернете, и, похоже, доступно много пакетов (xlwt, XlsXcessive, openpyxl). Другие предлагают выполнять запись в файл .csv (никогда не использовал CSV и на самом деле не понимаю, что это такое).
Программа очень проста. У меня есть два списка (с плавающей точкой) и три переменные (строки). Я не знаю длины двух списков, и они, вероятно, не будут одинаковой длины.
Я хочу, чтобы макет был таким, как на рисунке ниже:
Розовый столбец будет содержать значения из первого списка, а зеленый столбец будет содержать значения из второго списка.
Итак, какой лучший способ сделать это?
Я использую Windows 7, но у меня не обязательно будет установлен Office на компьютерах, на которых запущена эта программа.
Я написал это, используя все ваши предложения. Работа выполнена, но ее можно немного улучшить.
Как мне отформатировать ячейки, созданные в цикле for (list1 значения), как scientific или number?
Я не хочу усекать значения. Фактические значения, используемые в программе, будут содержать около 10 цифр после запятой.
Переведено автоматически
Ответ 1
Используйте DataFrame.to_excel из pandas. Pandas позволяет вам представлять ваши данные в функционально насыщенных структурах данных, а также позволяет вам читать в файлах Excel.
Сначала вам нужно будет преобразовать ваши данные в DataFrame, а затем сохранить их в файл Excel следующим образом:
In [1]: from pandas import DataFrame In [2]: l1 = [1,2,3,4] In [3]: l2 = [1,2,3,4] In [3]: df = DataFrame({'Stimulus Time': l1, 'Reaction Time': l2}) In [4]: df Out[4]: Reaction Time Stimulus Time 011 122 233 344
In [5]: df.to_excel('test.xlsx', sheet_name='sheet1', index=False)
и полученный файл Excel выглядит следующим образом:
Обратите внимание, что оба списка должны быть одинаковой длины, иначе pandas будут жаловаться. Чтобы решить эту проблему, замените все пропущенные значения на None.
Ответ 2
import xlwt
defoutput(filename, sheet, list1, list2, x, y, z): book = xlwt.Workbook() sh = book.add_sheet(sheet)
#You may need to group the variables together #for n, (v_desc, v) in enumerate(zip(desc, variables)): for n, v_desc, v inenumerate(zip(desc, variables)): sh.write(n, 0, v_desc) sh.write(n, 1, v)
xlrd / xlwt (стандарт): Python не имеет такой функциональности в своей стандартной библиотеке, но я думаю о xlrd / xlwt как о "стандартном" способе чтения и записи файлов Excel. Создать рабочую книгу, добавлять листы, записывать данные / формулы и форматировать ячейки довольно просто. Если вам нужно все это, вы можете добиться наибольшего успеха с помощью этой библиотеки. Я думаю, вы могли бы выбрать вместо этого openpyxl, и это было бы очень похоже, но я им не пользовался.
Чтобы отформатировать ячейки с помощью xlwt, определите a XFStyle и включите стиль при записи на лист. Вот пример со многими числовыми форматами. Смотрите пример кода ниже.
Tablib (мощный, интуитивно понятный): Tablib - это более мощная, но интуитивно понятная библиотека для работы с табличными данными. С его помощью можно создавать книги Excel с несколькими листами, а также в других форматах, таких как csv, json и yaml. Если вам не нужны форматированные ячейки (например, цвет фона), вы окажете себе услугу, воспользовавшись этой библиотекой, которая в долгосрочной перспективе продвинет вас дальше.
csv (легко): файлы на вашем компьютере могут быть как текстовыми, так и двоичными. Текстовые файлы - это просто символы, включая специальные, такие как перевод строки и табуляция, и их можно легко открыть где угодно (например, в блокноте, вашем веб-браузере или продуктах Office). CSV-файл - это текстовый файл, который отформатирован определенным образом: каждая строка представляет собой список значений, разделенных запятыми. Программы на Python могут легко читать и записывать текст, поэтому csv-файл - это самый простой и быстрый способ экспортировать данные из вашей программы на Python в Excel (или другую программу на python).
Файлы Excel являются двоичными и требуют специальных библиотек, которые знают формат файла, поэтому для их чтения / записи вам понадобится дополнительная библиотека для python или специальная программа, такая как Microsoft Excel, Gnumeric или LibreOffice.