import xlwings as xw
import re
#启动APP,visible:是否可见,addbook:是否新增工作簿
app=xw.App(visible=False,add_book=False)
#APP是否可见
app.display_alerts=False
#是否刷新APP屏幕
app.screen_updating=False
#文件路径
filepath=r'C:\Users\**********.xls'
#打开文件
wb=app.books.open(filepath)
#打开活动工作表
sht=wb.sheets[0]
#删除其他工作表
wb.sheets['sheet2','sheet3'].delete()
#获取文件名称
a = wb.name
#正则匹配
b = re.findall('([I]{1,2}\-\d{1,2}|\d{1,2})',a)
#检查
print(b)
#循环查找定位
for row in range(170,210):
for col in range(1,10):
if sht.range(row,col).value == '吊弦编号与长度':
print ((row,col))
sht.range('A1:A'+str(row-1)).api.EntireRow.Delete() #整行删除
#赋值单元格,可以是字符串或数字等
sht.range("A1").value = '桐城东'+str(b[0]) + '吊弦编号与长度'
#合并单元格,拆分单元格unmerge()
sht.range('A1:J1').merge()
sht.range('G2:H2').merge()
#返回有数据的最后一行
#print(sht.used_range.rows.count)
#垂直、水平居中,-4130,自动换行
sht.range('A1:J200').api.HorizontalAlignment = -4108
sht.range('A1:J200').api.VerticalAlignment = -4108
#改变行高
sht.range("A1").row_height = 30
sht.range("A2").row_height = 36
#改变列宽
sht.range('J5').column_width = 9.5
sht.range('a4:a200').row_height = 20
#改变字体大小
sht.range('A1').api.Font.Size = 20
#改变单元格颜色,RGB
sht.range('A1:J200').color = None
#print(sht.api.PageSetup.LeftHeader)
#改变页眉页脚
sht.api.PageSetup.LeftHeader = ' '
sht.api.PageSetup.LeftFooter = ' '
sht.api.PageSetup.CenterFooter = ' '
sht.api.PageSetup.RightFooter = ' '
#改变打印区域
sht.api.PageSetup.PrintArea = "$A$1:$J$200"
#设置打印顶部标题
sht.api.PageSetup.PrintTitleRows = "$1:$3"
#设置字体是否加粗
sht.range("A1:J200").api.Font.Bold = False
#保存
wb.save()
#退出App,杀死进程
app.kill()
#其他的可以利用EXCEL中的录制宏来查看api代码,或者查询https://docs.microsoft.com/en-us/office/vba/api/excel.page
#其他xlwings代码可自行上网查找
#当程序出错时,打开表格显示只读,可进入任务管理器→详细信息,自行删除EXCEL进程