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,可以用True或2
rng.Characters.Font.Underline = 2
# 如下操作会报错
rng.Characters(1, 3).Font.Underline = 2
# 或者如下操作也会报错,总之不能加参数
rng.Characters(Start:=1, Length:=3).Font.Underline = 2
关于xlwings、api、Characters参考文章(感谢各位前辈的文章):
北方的白桦林,原文链接:
http://www.360doc.com/content/19/1214/21/41651190_879770010.shtml
利用xlwings调用宏:先用xlwings调宏(这里没有“用”字),然后选中要操作的单元格,再用宏(这里才“用”)对部分内容添加下划线。
vba.xlsm
改模块名为m1(建议改一下名字,这样调用方便,更重要的是office版本有中英文差别,中文是“模块1”,英文是“module1”,不改名兼容性差)
Sub underline(start, length)
ActiveCell.Characters(start:=start, length:=length).Font.underline = xlUnderlineStyleSingle
End Sub
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")
path_test = r'C:\Users\Administrator\Desktop\test.xls'
wb_test = app.books.open(path_test)
wb_test.sheets[0].range('A1').select()
underline(2, 3)