Python – запись в таблицу Excel

Я новичок в 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 цифр после десятичного числа.

  • Является ли словарь Python примером хеш-таблицы?
  • Какова истинная разница между словарем и хэш-таблицей?
  • 8 Solutions collect form web for “Python – запись в таблицу Excel”

     import xlwt def output(filename, sheet, list1, list2, x, y, z): book = xlwt.Workbook() sh = book.add_sheet(sheet) variables = [x, y, z] x_desc = 'Display' y_desc = 'Dominance' z_desc = 'Test' desc = [x_desc, y_desc, z_desc] col1_name = 'Stimulus Time' col2_name = 'Reaction Time' #You may need to group the variables together #for n, (v_desc, v) in enumerate(zip(desc, variables)): for n, v_desc, v in enumerate(zip(desc, variables)): sh.write(n, 0, v_desc) sh.write(n, 1, v) n+=1 sh.write(n, 0, col1_name) sh.write(n, 1, col2_name) for m, e1 in enumerate(list1, n+1): sh.write(m, 0, e1) for m, e2 in enumerate(list2, n+1): sh.write(m, 1, e2) book.save(filename) 

    для получения дополнительных пояснений: https://github.com/python-excel

    Используйте DataFrame.to_excel из панд . 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 0 1 1 1 2 2 2 3 3 3 4 4 In [5]: df.to_excel('test.xlsx', sheet_name='sheet1', index=False) 

    и файл excel, который выходит, выглядит следующим образом:

    введите описание изображения здесь

    Обратите внимание, что оба списка должны быть одинаковой длины, иначе панды будут жаловаться. Чтобы решить эту проблему, замените все отсутствующие значения на None .

    • xlrd / xlwt (стандарт): Python не имеет этой функциональности в своей стандартной библиотеке, но я считаю xlrd / xlwt «стандартным» способом чтения и записи файлов excel. Довольно легко сделать книгу, добавить листы, написать данные / формулы и форматировать ячейки. Если вам нужны все эти вещи, вы можете добиться наибольшего успеха в этой библиотеке. Я думаю, вы могли бы выбрать openpyxl вместо этого, и это было бы очень похоже, но я не использовал его.

      Чтобы форматировать ячейки с помощью xlwt, определите XFStyle и XFStyle стиль при написании на листе. Вот пример со многими форматами чисел . См. Пример кода ниже.

    • Tablib (мощный, интуитивно понятный): Tablib – более мощная, но интуитивно понятная библиотека для работы с табличными данными. Он может писать книги Excel с несколькими листами, а также другими форматами, такими как csv, json и yaml. Если вам не нужны форматированные ячейки (например, цвет фона), вы сделаете себе одолжение, чтобы использовать эту библиотеку, которая поможет вам в дальнейшем.

    • csv (easy): файлы на вашем компьютере являются текстовыми или двоичными . Текстовые файлы – это просто символы, в том числе специальные, такие как новые строки и вкладки, и их можно легко открывать в любом месте (например, блокнот, веб-браузер или продукты Office). CSV-файл представляет собой текстовый файл, который форматируется определенным образом: каждая строка представляет собой список значений, разделенных запятыми. Программы Python могут легко читать и писать текст, поэтому csv-файл – это самый простой и быстрый способ экспортировать данные из вашей программы python в excel (или другую программу python).

      Файлы Excel являются двоичными и требуют специальных библиотек, которые знают формат файла, поэтому для их чтения и записи вам нужна дополнительная библиотека для python или специальная программа, например Microsoft Excel, Gnumeric или LibreOffice.


     import xlwt style = xlwt.XFStyle() style.num_format_str = '0.00E+00' ... for i,n in enumerate(list1): sheet1.write(i, 0, n, fmt) 
     import xlsxwriter # Create an new Excel file and add a worksheet. workbook = xlsxwriter.Workbook('demo.xlsx') worksheet = workbook.add_worksheet() # Widen the first column to make the text clearer. worksheet.set_column('A:A', 20) # Add a bold format to use to highlight cells. bold = workbook.add_format({'bold': True}) # Write some simple text. worksheet.write('A1', 'Hello') # Text with formatting. worksheet.write('A2', 'World', bold) # Write some numbers, with row/column notation. worksheet.write(2, 0, 123) worksheet.write(3, 0, 123.456) # Insert an image. worksheet.insert_image('B5', 'logo.png') workbook.close() 

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

    например, напишите этот код:

     f = open('example.csv','w') f.write("display,variable x") f.close() 

    вы можете открыть этот файл с помощью excel.

    Попробуйте также взглянуть на следующие библиотеки:

    xlwings – для получения данных в электронной таблице и из нее из Python, а также для обработки книг и диаграмм

    ExcelPython – надстройка Excel для записи пользовательских функций (UDF) и макросов в Python вместо VBA

    Я рассмотрел несколько модулей Excel для Python и нашел openpyxl лучшим.

    В бесплатной книге «Автоматизация скучного материала с Python» есть глава о openpyxl с более подробной информацией или вы можете проверить сайт « Прочитайте документы» . Для использования openpyxl вам не потребуется Office или Excel.

    Ваша программа будет выглядеть примерно так:

     import openpyxl wb = openpyxl.load_workbook('example.xlsx') sheet = wb.get_sheet_by_name('Sheet1') stimulusTimes = [1, 2, 3] reactionTimes = [2.3, 5.1, 7.0] for i in range(len(stimulusTimes)): sheet['A' + str(i + 6)].value = stimulusTimes[i] sheet['B' + str(i + 6)].value = reactionTimes[i] wb.save('example.xlsx') 

    Самый простой способ импортировать точные числа – это добавить десятичное число после чисел в ваших l1 и l2. Python интерпретирует эту десятичную точку как инструкции от вас, чтобы указать точное число. Если вам нужно ограничить его до десятичного разряда, вы должны иметь возможность создать команду печати, которая ограничивает вывод, что-то простое:

    print variable_example [: 13]

    Ограничило бы его десятым десятичным разрядом, считая, что ваши данные имеют два целых числа слева от десятичной.

    Python - лучший язык программирования в мире.