前车之鉴,后车之师。

   ** 另类的xls的表格获取**

今天同事请教了一个问题,说是有一个为 xls 的表格,用控件,xlrd 都无法获取值。
我表示惊讶,用 xlrd,openpyxl 进行读取,都报了如下的错误:
前车之鉴,后车之师。

格式错误,大概意思就是期望的是 BOF 开头记录,但是读到的是’\xef\xbb\xbf<?xml’ 。通常 Unsupported format 是因为 Excel 文件里有不能读取的字符引起的。

而我这里读到’\xef\xbb\xbf<?xml’字符,有 XML,怀疑文件本身可能就不是 XML,用简单的读文件方法读文件或简单把后缀改成 XML,可以看出,果然是一个 XML 文件。

下图是特殊情况:
前车之鉴,后车之师。
下图为一般情况:
前车之鉴,后车之师。

后来试着把原来的.XLS 文件另存为文件为.XLSX 后缀的,结果还是报错。手动另存为文件的话倒是可以正常打开。不过过程较为繁琐。
最后我试了一下 xlwings 模块。可以正常的对 excel 进行数值的获取。

import xlwings as xw

app = xw.App(visible=False,add_book=False)
data = app.books.open(r"C:\Users\lwj\Desktop\1554363640050.xls")
sht = data.sheets['基本信息']
a = sht.range('b2:b2').value
print('获取的值',a)

下图是获取的结果:
前车之鉴,后车之师。
希望对大家能带来帮助,谢谢!