首先尝试在插入数据库之前读取 excel/csv 数据进行检查,虽然 csv 工作正常可以读取数据,但 xlsx 和 xlx 显示以下错误
/academy/add_advisor 'utf-8' 编解码器中的 UnicodeDecodeError 无法解码位置 10 中的字节 0xa1:起始字节无效
我的代码片段:
from tablib import Dataset
this_file = request.FILES['bulk_file']
dataset = Dataset()
imported_data = dataset.load(this_file.read().decode("utf-8"),format='xlsx')
for data in dataset:
print(data[0], data[1], data[2], data[3], data[4])
根据来自此行的错误消息错误
imported_data = dataset.load(this_file.read().decode("utf-8"),format='xlsx')
我试图导入的 excel 文件,我从谷歌驱动器 excel 下载它作为 xlsx 文件(微软 excel)。还从 onedrive(microsoft) xlsx 文件下载了一个仍然出现相同的错误。
我尝试过的更多方法是
imported_data = dataset.load(this_file.read().decode("ISO-8859-1"),format='xlsx')
imported_data = dataset.load(this_file.read().strip().decode("ISO-8859-1"),format='xlsx')
imported_data = dataset.load(this_file.read().strip().decode("CP1252"),format='xlsx')
imported_data = dataset.load(this_file.read().strip().decode("windows-1252"),format='xlsx')
imported_data = dataset.load(this_file.read().strip().decode("Latin-1"),format='xlsx')
但是没有运气:(如果有更好的方法可以尝试,请分享:)(:感谢您阅读:)
好吧,如果您the_file
是一个.xlsx
文件,那么手动解码流可能不是一个好主意:an.xlsx
是XML 文件的压缩流。所以这意味着它并没有真正遵循标准的字符串编码。
但是这dataset.load(..)
也表明它不需要一个字符串,它需要它旨在加载的数据。如果是.xlsx
文件,那是二进制数据,所以我们可以使用.read()
将文件的内容读入二进制字符串,从而让其dataset
进行正确的处理,例如:
imported_data = dataset.load(this_file.read(),format='xlsx')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句