>我有一个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>
这是蟒蛇代码
@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'PKx03x04x14x00x06x00x08x00x00x00!x00bxeex9dh^x01x00x00x90x04x00x00x13x00x08x02[Content_Types].xml and so on...
我不确定如何获取 xlsx 文件中的数据 [假设 xlsx 中只有一张纸]。
到目前为止,我看到的关于从 xlsx 读取数据的所有问题都需要文件路径并使用 pandas 或其他软件包打开该文件。但是我无法将文件放在我正在使用的 Heroku 服务器上,我需要通过表单发送我的文件数据。
任何指示都值得赞赏。
谢谢。
XLSX文件通常与Windows-1252编码一起保存。 根据我的经验,拉丁语 1 也很好用。
关于 xlsx 编码的进一步讨论:
- 保存文件时Microsoft Excel 使用什么字符集?
- 适用于 UTF8 到 1252 的 Windows C API
您需要更新 FieldStorage 类,以使用不同的编码来分析上传的文件(如果该文件是 xlsx 类型(。