2015-08-27 9 views
1

Я новичок в Python, поэтому надеюсь, что это звучит правильно. Как я могу использовать Python для записи в файл Excel с пользовательского ввода? Я хочу, чтобы мой скрипт спрашивал пользователей «Имя:» «Должность:« «Номер здания:» «Дата:» и т. Д. И из этого необработанного ввода, заполняйте соответствующие столбцы один за другим в электронной таблице Excel. Я не хочу, чтобы в будущем сценарий использовался для перезаписи предыдущих данных на листе. Я хотел бы каждый раз создавать новую строку в электронной таблице, а затем заполнять правильные записи в каждой строке. Я надеюсь, что в этом есть смысл. Большое вам спасибо за вашу помощь.Python - как я могу написать пользовательский ввод в файл Excel?

+0

https://xlsxwriter.readthedocs.org/ Вы можете создать spreadsheed файлы с помощью этого модуля. В основном вы можете использовать raw_input для сбора данных от пользователя. – mnrl

+2

Другой способ - записать в файл csv, который Excel может прочитать. Таким образом, вы можете использовать библиотеку csv, поставляемую с Python, - обратите внимание, что это чисто формат данных, вы не сможете делать красивые цвета/границы/и т. Д. С помощью csv –

+0

@Tim Wakeham любит вашу идею о файле csv , Более подробная информация о том, как это сделать? Он не должен быть достаточно разборчивым с обязательными полями и может добавлять будущие входы. – kittenparade

ответ

3

Чтобы написать в книгу, вы можете использовать openpyxl. Вот некоторые основные способы использования и должны помочь избежать перезаписи:

import openpyxl 
wb = openpyxl.load_workbook('C:/test.xlsx') 
ws = wb.active 
i = 0 
cell_val = '' 
# Finds which row is blank first 
while cell_val != '': 
    cell_val = ws['A' + i].value 
    i += 1 
# Modify Sheet, Starting With Row i 
wb.save('C:/test.xlsx') 

Надеюсь, что это поможет.

Edited, получая вход и время:

Для получения информации от пользователя, использовать

x = input('Prompt: ') 

Однако, если вы хотите, чтобы фактический ток, я предлагаю использовать time модуль:

>>> from time import strftime 
>>> date = strftime('%m-%d-%y') 
>>> time = strftime('%I:%M%p') 
>>> print(date) 
08-28-15 
>>> print(time) 
01:57AM 
+0

Как я могу запросить ввод данных для определенных полей с этим? то есть дата, время – kittenparade

+0

@pbnjenni Я обновил свой ответ, надеюсь, что это сработает для вас. – SuperNova

0

Возможно, вы захотите использовать модуль pandas. Это делает чтение, запись и работы с файлами Excel очень легко:

http://pandas.pydata.org/

панды является открытым исходным кодом, BSD-лицензированные библиотека, обеспечивающая высокую производительность, легкий в использовании структуры данных и инструменты анализа данных для языка программирования Python.

+0

Я бы не рекомендовал использовать Pandas из-за ограничений их собственного писателя Excel. Хотя создатель Excel довольно удобен, если пользователь явно не работает с данными, уже использующими Pandas, для загрузки всех данных в Pandas будет значительным накладные расходы, а затем для экспорта данных в XlsxWriter или OpenPyXl, и они будут иметь очень ограниченные возможности с помощью ни одна из расширяемости обоих модулей. Например, OpenPyXl и XlsxWriter разрешают условное форматирование, настраиваемые форматы столбцов и т. Д., Которые потенциально могут представлять интерес для OP. –

2

Я также добавлю, что XlsxWriter также отличная библиотека для записи в Excel, однако, в отличие от OpenPyXl, она является только писателем и не читает файл Excel s.

Пример найден из их documentation выглядит следующим образом:

import xlsxwriter 

# Create a workbook and add a worksheet. 
workbook = xlsxwriter.Workbook('Expenses01.xlsx') 
worksheet = workbook.add_worksheet() 

# Some data we want to write to the worksheet. 
expenses = (
    ['Rent', 1000], 
    ['Gas', 100], 
    ['Food', 300], 
    ['Gym', 50], 
) 

# Start from the first cell. Rows and columns are zero indexed. 
row = 0 
col = 0 

# Iterate over the data and write it out row by row. 
for item, cost in (expenses): 
    worksheet.write(row, col,  item) 
    worksheet.write(row, col + 1, cost) 
    row += 1 

# Write a total using a formula. 
worksheet.write(row, 0, 'Total') 
worksheet.write(row, 1, '=SUM(B1:B4)') 

workbook.close() 
Смежные вопросы