欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

xlwings 在 Linux 下的使用和限制

最编程 2024-03-23 14:38:39
...

前面一直认为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中,如果没有只读模式,会提示你不支持这个平台。

image.png

而即使你设置了只读以后,也会提示你要pro版本的key。

image.png

所以才有了上面的导入环境变量的步骤。

读取差异

这里的差异只是指读取方面的,linux内已经限制了不能写入了。

表格active异常

在这里active是不能用的,你不能通过wb.sheets.active取活动表,因为他就没有活动的状态监控。仍旧可以通过索引数字和表名称的方式取得工作表。

image.png  

颜色和单元格属性异常

无论是color还是row_height和column_width这类属性,似乎都没有办法提取出来。

通过打印这个位置的api可以观察,这里只有一个value的值可以被调用。

 

print(ws.range((1, 1)).api)

 

image.png

而在windows下,非只读模式里,这个是Range的实例

image.png   经过试验,公式里面的值也是可以被读取的。 所以说,这个在linux里读工作表的功能可能用来读取工作簿表里单元格的值,类似于pandas的read_excel。

推荐阅读