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



>我有一个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 类型(。

最新更新