xlwings 在 mac 环境下的几个坑

  • 使用 xlwings.Book() 创建文件报错
1
2
3
## 使用如下方式创建文件
xlwings.App(visible=True, add_book=False)
app.books.add()
  • workbook.save() 等方法需要文件访问权限
1
2
3
4
可以先将文件保存到 excel 程序有访问权限的路径下,然后将保存后的文件复制到目标目录。

excel 程序有访问权限的路径一般为:
/Users/username/Library/Group Containers/xxxxx.Office/MyExcelFolder/
  • excel 表格内容写入速度太慢
1
2
3
4
5
6
7
8
9
10
诸如如下的方法都是跨 App 调用,需要用到 mac 系统级的 App 通信机制,效率很低,因此需要减少如下方法的调用频率:

- sheet.range()
- sheet.range().value = data2Write

一个可行的思路是,每次调用方法时,写入更多的数据(避免一次只写入一行),这样就减少了跨 App 方法调用的次数。

在代码层面,就是要 data2Write 封装更多行的数据。

这里也需要注意,一次不要写入太多数据,避免内存溢出。