Конвертировать xlsx, отправленный через HTML-форму в CSV / TSV в Python - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть HTML-форма, с помощью которой пользователь может загрузить файл .xlsx и рассчитать ставки заработной платы за смены в файле .xlsx (см. Ниже)

<form enctype="multipart/form-data" action="/calculate_payrate" method="post">
    <label class="label">PLEASE UPLOAD FILE HERE:</label>
    <input type="file" id="roaster_file"  name="roaster_data"></br>
    <input type="submit" id="calculate_input" name="submit" value="CALCULATE PAY" >
</form>

Вот код Python

@view_config(route_name='calculate_payrate', 
renderer='../templates/pay/pay.mako')
def calculate_payrate(request):
    roaster_data = request.POST['roaster_data']
    roaster_data = roaster_data.value
    roaster_data = roaster_data.decode('utf-8')
    ## code to do calculate pay

Проблема в том, что когда пользователь загружает файл CSV или TSV, я могу легко получить данные в файлах и выполнить свои вычисления.Но когда загружается файл xlsx, и я получаю данные ниже

 FieldStorage('roaster_data', 'abc.xlsx') 

b'PK\x03\x04\x14\x00\x06\x00\x08\x00\x00\x00!\x00b\xee\x9dh^\x01\x00\x00\x90\x04\x00\x00\x13\x00\x08\x02[Content_Types].xml and so on...

Я не уверен, как получить данные в файле xlsx [при условии, что вxlsx].

Все вопросы, которые я до сих пор видел о чтении данных из xlsx, требуют пути к файлу и открытия этого файла с помощью pandas или какого-либо другого пакета.Но, однако, я не могу разместить файл на сервере Heroku, который я использую, и мне нужно отправить данные моего файла через форму.

Любые указатели приветствуются.

Спасибо.

1 Ответ

0 голосов
/ 12 февраля 2019

xlsx файлы обычно сохраняются в кодировке windows-1252.latin-1 тоже хорошо работает, основываясь на моем опыте.

Дальнейшие обсуждения по кодированию xlsx:

Вам необходимо обновить класс FieldStorage, чтобы использовать другую кодировку для анализа загруженного файла, если он относится к типу xlsx.

...