首先,在插入数据库之前尝试读取excel / csv数据以进行检查, 虽然CSV可以正常工作,但可以读取数据,但是xlsx和xlx显示以下错误
/ academy / add_advisor处的UnicodeDecodeError 'utf-8'编解码器无法解码位置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文件,我从google drive excel下载了xlsx文件(microsoft 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')
但是没有运气:( 如果有更好的方法,请尝试分享:)(: 谢谢您的阅读:)
答案 0 :(得分:1)
如果您的the_file
是.xlsx
文件,那么手动解码流可能不是一个好主意:.xlsx
是压缩 XML文件流。因此,这意味着它实际上并没有遵循标准的字符串编码。
但是dataset.load(..)
也表明它并不认为需要字符串,而是需要加载的数据。如果是.xlsx
文件,即 binary 数据,那么我们可以使用.read()
将文件的内容读取为二进制字符串,从而使{{ 1}}做正确的处理,例如:
dataset