【xlwings问题】如果首行存在合并单元格,则读取的数据不全

数据是这样的:

准备一下数据表

import xlwings as xw
app = xw.App(visible=True, add_book=False)
workbook = app.books.open("部门业绩-模板的副本.xlsx")
sheet = workbook.sheets[0]

有问题的读法

sheet.range("A1").expand().value

输出为:

['部门:{dept}', '收入', '支出', '结余']

可以看到缺少了第二列,原因是A2这里是None,没做很好的处理。

修复的读法1:

sheet.used_range.value

直接会输出:

[['部门:{dept}', None], ['收入', 100.0], ['支出', 300.0], ['结余', 200.0]]

已经解决了。

但是,used_range其实不会从A1开始的,那么可以做修正

修复的方法2:

last_cell = sheet.used_range.last_cell
sheet.range((1, 1), (last_cell.row, last_cell.column)).value

输出:

[['部门:{dept}', None], ['收入', 100.0], ['支出', 300.0], ['结余', 200.0]]

本文章的解法,来自xlwings的源码:

xlwings.pro.reports.main.render_template