Python xlwings Excel单元格部分内容添加下划线

一、问题

xlwings的api可以实现Characters的功能,但加参数后会出错。

所以只能实现整个单元格加下划线,但无法进行部分内容加下划线。

我翻了很多文章,没有解决这个问题。

后来只能用间接的办法解决了,通过调用vba来解决。记录在此,自己以后可以看,也希望能供小伙伴们参考。

先说下xlwings的api,原理我不说了,一搜一大堆,直接上代码和链接。建议小伙伴看看,因为xlwings的api很厉害的,基本满足日常需要。

import xlwings as xw

app = xw.App(visible=True, add_book=False)

path_test = r'C:\Users\Administrator\Desktop\test.xls'

wb_test = app.books.open(path_test)

sh1 = wb_test.sheets[0]

rng = sh1.range('A1').api

# 下划线,赋值不能用xlUnderlineStyleSingle,可以用True2

rng.Characters.Font.Underline = 2

# 如下操作会报错

rng.Characters(1, 3).Font.Underline = 2

# 或者如下操作也会报错,总之不能加参数

rng.Characters(Start:=1, Length:=3).Font.Underline = 2

关于xlwings、api、Characters参考文章(感谢各位前辈的文章):

  • CSDN博主「DataLab」的原创文章,原文链接:https://blog.csdn.net/DataLab/article/details/124635690

北方的白桦林,原文链接:

http://www.360doc.com/content/19/1214/21/41651190_879770010.shtml

二、解决思路

利用xlwings调用宏:先用xlwings调宏(这里没有“用”字),然后选中要操作的单元格,再用宏(这里才“用”)对部分内容添加下划线。

1、先制作宏

  1. 新建含宏的Excel表格

vba.xlsm

  1. 插入模块

Python xlwings Excel单元格部分内容添加下划线_第1张图片

  1. 改模块名

改模块名为m1(建议改一下名字,这样调用方便,更重要的是office版本有中英文差别,中文是“模块1”,英文是“module1”,不改名兼容性差)

Python xlwings Excel单元格部分内容添加下划线_第2张图片

  1. m1中加入代码,保存

Sub underline(start, length)

ActiveCell.Characters(start:=start, length:=length).Font.underline = xlUnderlineStyleSingle

End Sub

2、导入xlwings,打开vba.xlsm,调宏

import xlwings as xw

app = xw.App(visible=True, add_book=False)

path_vba = r'C:\Users\Administrator\Desktop\vba.xlsm'

wb_vba = app.books.open(path_vba)

underline = wb_vba.macro("m1.underline")

3、打开要操作的Excel,选中要操作的单元格

path_test = r'C:\Users\Administrator\Desktop\test.xls'

wb_test = app.books.open(path_test)

wb_test.sheets[0].range('A1').select()

4、用宏

underline(2, 3)

Python xlwings Excel单元格部分内容添加下划线_第3张图片

 

你可能感兴趣的:(Python,python)