我有一个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服务器上,因此我需要通过表单发送文件数据。
任何指针都值得赞赏。
谢谢。
答案 0 :(得分:0)
xlsx文件通常使用Windows-1252编码保存。根据我的经验,latin-1的效果也很好。
关于xlsx编码的进一步讨论:
如果文件类型为xlsx,则需要更新FieldStorage类以使用不同的编码来解析上传的文件。