Я новичок в Python. Мне нужно записать некоторые данные из моей программы в электронную таблицу. Я искал в Интернете, и, кажется, есть много доступных пакетов (xlwt, XlsXcessive, openpyxl). Другие предлагают записать в файл .csv (никогда не использовал CSV и не совсем понимали, что это такое).
Программа очень проста. У меня есть два списка (float) и три переменные (строки). Я не знаю длины двух списков, и они, вероятно, не будут одинаковой длины.
Я хочу, чтобы макет был таким, как на картинке ниже:
Розовый столбец будет иметь значения первого списка, а зеленый столбец будет иметь значения второго списка.
Так каков лучший способ сделать это?
PS Я использую Windows 7, но у меня не обязательно будет установлен Office на компьютерах с этой программой.
import xlwt
x=1
y=2
z=3
list1=[2.34,4.346,4.234]
book = xlwt.Workbook(encoding="utf-8")
sheet1 = book.add_sheet("Sheet 1")
sheet1.write(0, 0, "Display")
sheet1.write(1, 0, "Dominance")
sheet1.write(2, 0, "Test")
sheet1.write(0, 1, x)
sheet1.write(1, 1, y)
sheet1.write(2, 1, z)
sheet1.write(4, 0, "Stimulus Time")
sheet1.write(4, 1, "Reaction Time")
i=4
for n in list1:
i = i+1
sheet1.write(i, 0, n)
book.save("trial.xls")
Я написал это, используя все ваши предложения. Он выполняет свою работу, но его можно немного улучшить.
Как отформатировать ячейки, созданные в цикле for (значения list1), как научные или числовые?
Я не хочу усекать значения. Фактические значения, используемые в программе, будут иметь около 10 цифр после десятичной дроби.
Ответы:
для более подробного объяснения: https://github.com/python-excel
источник
xlwt
это только для написания старых.xls
файлов для Excel 2003 или более ранних версий. Это может быть устаревшим (в зависимости от ваших потребностей).Используйте DataFrame.to_excel от панд . Pandas позволяет вам представлять ваши данные в функционально богатых структурах данных, а также позволяет читать в файлах Excel.
Сначала вам нужно будет преобразовать ваши данные в DataFrame, а затем сохранить их в файл Excel следующим образом:
и файл Excel, который выходит, выглядит так:
Обратите внимание, что оба списка должны быть одинаковой длины, иначе панды будут жаловаться. Чтобы решить эту проблему, замените все пропущенные значения на
None
.источник
xlwt
также, но получаяopenpyxl
ошибку. Для всех, кого это смущает - все это в нужном вам типе файла. Документы pandas (0.12) говорят: «Файлы с.xls
расширением будут записываться с использованием xlwt, а файлы с.xlsx
расширением - с использованием openpyxl».xlrd / xlwt (стандартный): Python не имеет этой функциональности в своей стандартной библиотеке, но я думаю о xlrd / xlwt как о «стандартном» способе чтения и записи файлов Excel. Довольно легко создать рабочую книгу, добавить листы, записать данные / формулы и отформатировать ячейки. Если вам нужны все эти вещи, вы можете добиться наибольшего успеха с этой библиотекой. Я думаю, что вы могли бы вместо этого выбрать openpyxl, и это было бы очень похоже, но я не использовал его.
Чтобы отформатировать ячейки с помощью xlwt, определите
XFStyle
и включите стиль при записи на лист. Вот пример со многими числовыми форматами . Смотрите пример кода ниже.Tablib (мощный, интуитивно понятный): Tablib - более мощная, но интуитивно понятная библиотека для работы с табличными данными. Он может создавать книги Excel с несколькими листами, а также в других форматах, таких как CSV, JSON и YAML. Если вам не нужны отформатированные ячейки (например, цвет фона), вы сделаете себе одолжение, чтобы использовать эту библиотеку, которая продвинет вас дальше.
CSV (легкий): файлы на вашем компьютере являются текстовыми или двоичными . Текстовые файлы - это просто символы, в том числе специальные, такие как переводы строк и табуляции, и их можно легко открыть где угодно (например, блокнот, веб-браузер или продукты Office). CSV-файл - это текстовый файл, который отформатирован определенным образом: каждая строка представляет собой список значений, разделенных запятыми. Программы Python могут легко читать и писать текст, поэтому CSV-файл - это самый простой и быстрый способ экспорта данных из вашей программы Python в Excel (или другую программу Python).
Файлы Excel являются двоичными и требуют специальных библиотек, которые знают формат файла, поэтому для чтения / записи вам нужна дополнительная библиотека для python или специальная программа, такая как Microsoft Excel, Gnumeric или LibreOffice.
источник
Я рассмотрел несколько модулей Excel для Python и обнаружил, что openpyxl является лучшим.
В бесплатной книге Automate the Boring Stuff with Python есть глава об openpyxl с более подробной информацией, или вы можете проверить сайт Read the Docs . Вам не нужно будет устанавливать Office или Excel, чтобы использовать openpyxl.
Ваша программа будет выглядеть примерно так:
источник
CSV обозначает значения, разделенные запятыми. CSV похож на текстовый файл и может быть создан простым добавлением расширения .CSV
например напишите этот код:
Вы можете открыть этот файл с Excel.
источник
é
или中
, лучше сделать этоf.write('\xEF\xBB\xBF')
сразу послеopen()
. Это спецификация ( метка порядка байтов , qv), необходимая программному обеспечению Microsoft для распознавания кодировки UTF-8источник
Попробуйте взглянуть и на следующие библиотеки:
xlwings - для получения данных в и из электронной таблицы из Python, а также для работы с книгами и диаграммами
ExcelPython - надстройка Excel для написания пользовательских функций (UDF) и макросов в Python вместо VBA
источник
OpenPyxl
довольно хорошая библиотека, созданная для чтения / записи файлов Excel 2010 xlsx / xlsm:https://openpyxl.readthedocs.io/en/stable
Другой ответ , ссылаясь на это, использует deperciated функцию (
get_sheet_by_name
). Вот как это сделать без него:источник
FileNotFoundError: [Errno 2] No such file or directory: 'New.xlsx'
openpyxl.load_workbook
загружает рабочую книгу, которая уже присутствует. Создайте файл,New.xlsx
чтобы избежать этой ошибки.xlsxwriter
Библиотека отлично подходит для создания.xlsx
файлов. Следующий фрагмент кода генерирует.xlsx
файл из списка диктов при указании порядка и отображаемых имен :источник
Самый простой способ импортировать точные числа - это добавить десятичную дробь после цифр в вашем
l1
иl2
. Python интерпретирует эту десятичную точку как инструкции от вас, чтобы включить точное число. Если вам нужно ограничить его до некоторого десятичного знака, вы сможете создать команду печати, которая ограничивает вывод, что-то простое, например:Ограничил бы это до десятого знака после запятой, предполагая, что ваши данные имеют два целых числа слева от десятичного знака.
источник
Вы можете попробовать hfexcel Human Friendly объектно-ориентированную библиотеку Python на основе XlsxWriter :
источник
Если вам нужно изменить существующую книгу, самый безопасный способ - использовать pyoo . Вам нужно установить несколько библиотек, и вам потребуется несколько обручей для перехода, но после их настройки это будет пуленепробиваемым, поскольку вы используете широкий и надежный API LibreOffice / OpenOffice.
Пожалуйста, ознакомьтесь с моей статьей о том, как настроить систему linux и выполнить базовое кодирование с использованием pyoo.
Вот пример кода:
источник