将通过html表单发送的xlsx转换为python中的csv / tsv

时间:2019-02-12 00:39:26

标签: python-3.x post xlsx

我有一个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 :(得分:0)

xlsx文件通常使用Windows-1252编码保存。根据我的经验,latin-1的效果也很好。

关于xlsx编码的进一步讨论:

如果文件类型为xlsx,则需要更新FieldStorage类以使用不同的编码来解析上传的文件。