前面一直认为xlwings库只能在windows使用,官方文档提供的xlwings server以及他的fastapi相关的demo,一直都不能理解这个json数据到底是什么,感觉就是个远端的编译器一样的。后来在xlwings的更新文档中,我发现了linux通用的使用方式,不过linux是只读的,不能操作和保存文档。
基本实现方法
import os
os.environ["XLWINGS_LICENSE_KEY"] = "noncommercial"
import xlwings
with xlwings.Book('data.xlsx',mode='r') as wb:
print(wb.name)
ws = wb.sheets[0]
print(ws.range((1, 1)).value)
这个功能使用了上下文管理器的方式来读取文件,并设置了文件的打开方式是只读。
在windows中,这个功能即使不设置mode为只读,也是能正常使用的,和过去打开已有Excel工作簿的方式并无区别,没有r模式的时候,代码运行后会在前台多出一个Excel程序。
在linux中,如果没有只读模式,会提示你不支持这个平台。
而即使你设置了只读以后,也会提示你要pro版本的key。
所以才有了上面的导入环境变量的步骤。
读取差异
这里的差异只是指读取方面的,linux内已经限制了不能写入了。
表格active异常
在这里active是不能用的,你不能通过wb.sheets.active取活动表,因为他就没有活动的状态监控。仍旧可以通过索引数字和表名称的方式取得工作表。
颜色和单元格属性异常
无论是color还是row_height和column_width这类属性,似乎都没有办法提取出来。
通过打印这个位置的api可以观察,这里只有一个value的值可以被调用。
print(ws.range((1, 1)).api)
而在windows下,非只读模式里,这个是Range的实例
经过试验,公式里面的值也是可以被读取的。
所以说,这个在linux里读工作表的功能可能用来读取工作簿表里单元格的值,类似于pandas的read_excel。