之前在用python修改excell文件的时候我使用的都是openpyxl,也确实都能解决问题,但是后面遇到了一个问题,就是删除行列。openpyxl在删除行或者列的时候会把后面的行或者列往前补,在没有合并单元格的时候,一切都很顺利;但是一旦有合并单元格的时候,删除行列后的excell就显得有些奇奇怪怪。......试了一下xlwings还挺好使的,xlwings调用excell的API当然好使了。
app = xw.App(visible=True, add_book=False) # 创建App
app.display_alerts = False # 警告提示,不显示Excel消息框
app.screen_updating = False # 关闭屏幕更新,可加快宏的执行速度
xlwings在整体操作逻辑上还是和openpyxl差不多的,说一下不同的地方。xlwings是选中某一个单元格或者某一个单元格区域操作,在选中多个单元格一个个的操作时效率低,应该尽量选中某一个单元格区域操作,应该尽量选中区域操作。如下图所示的就很耗时间。
# ==============这一段逻辑最耗时间================
for i in range(1, 6 + 1):
for j in range(1, max_column + 1):
cell_9 = get_column_letter(j) + str(i)
value = str(ws.range(cell_9).value)
for ch in value:
if ch != 'None':
if '\u4e00' <= ch <= '\u9fff':
ws.range(cell_9).font.name = '宋体'
ws.range(cell_9).font.size = 10
break
else:
ws.range(cell_9).font.name = 'Times New Roman'
ws.range(cell_9).font.size = 10
除此之外xlwings还有一个不好使的地方,那就是没有明确的出错提示,这一点是非常恶心的,往往排除一个问题耗时间。总的来说能用openpyxl就用openpyxl吧,如果实在openpyxl不好使就用xlwings吧。