python调用xlwings常用代码

xlwings常用代码

xlwings的好处是和Excel交互比较多,可以和VBA相互调用,语法也和VBA相同,但使用需要Excel程序,因此无法在linux环境下使用

工作簿和表的操作

app=xw.App(visible=True,add_book=False) #指定一个excel程序用于控制
app.display_alerts=False #关闭excel警报
app.screen_updating=False #关闭屏幕刷新
#新建一个表
wb2 = app.books.add() #在目前的excel程序中新建一个工作簿
wb2.save(r"C:\Users\Desktop\ym.xlsx") #将新建的工作簿保存并命名,不执行此步新建的工作簿只是在内存中
sh2 = wb2.sheets.add("sheet_name")  #新建的工作簿默认只有一个Sheet1,此步可新建一个sheet,并命名
sh1=wb2.sheets["Sheet1"] #指定wb2中的sheet1
sh1.name = sh1.name.replace("Sheet1","汇总") #对sheet1进行重命名
sh1.range("A1").value = 1 #对A1单元格赋值
sh2.range("A1:B2").value= [1,2,3,4] #对区域A1:B2赋值
sh1.range(1,1).value = 1 #同上
sh1.range((1,1),(2,2)).value = 1 #同上
wb.fullname #工作簿的绝对路径
ws.name='表格1' #修改表名
wb.sheets #显示当前工作簿中所有表单
wb2.sheets.count #表单的个数
sht.name #表单的名字
sh1.name = "myshet" #修改sheet名字
ws = wb.sheets.active #获取当前表
sht=xw.books['test2'].sheets['sheet1'] #引用工作表(指定工作表)
sht.activate() #激活sheet1为活动工作表
sht.clear() #清除sheet1的内容和格式
sht.contents() #清除sheet1的内容
sht.delete #sht.delete

#读取原表
wb=app.books.open(excel_path) #读取一个excel表
sht1 = wb.sheets[1] #指定sht1为该工作簿中第一个sheet
sht1 = wb.sheets["Sheet1"] #同上
info=sht1 .used_range #获取该sheet数据的使用范围
rows, columns = sht1.used_range.shape #获取最大行数和列数
wb.save() #保存工作簿
#wb.close() #关闭工作簿
#app.quit()    # quit() 有时关闭不了进程,即在后台该进程还在。
app.kill()     # 使用kill()关闭进程。

行列操作

sht.api.rows(1).delete #删除首行
sht.api.columns(1).delete# 删除首列
sht.api.columns(1).insert #插入列
sht.api.rows(1).insert #插入行
sht.api.rows('2:4').insert #在第二行前插入3行空白行
sht.api.rows('2:4').delete #删除第2-4行

单元格操作

rng=sht.range('A1') #指定单元格
rng = sht['A1'] #同上
rng = sht[0,0] #第一行的第一列即A1,注意,下标从0开始
rng = sht.range('A1:A5') #引用单元格区域
rng = sht['A1:A5'] #同上
rng = sht[:5,0] #同上
arr = ['1','2','3']
sht.range('A1:A3').value=arr #赋值
sht.range('A1').value=[1,2,3] #写入单元格A1:C1内容
sh1.range('C1').options(transpose=False).value = [1,2,3]  #transpose为真则转置,为假则不转置
sht.range('A1').clear() #清除单元表内容和格式
sh1.range('A1').column #获取列标
sht.range('A1').columns   # 返回单元格绝对地址RangeColumns()
sht.range('A1').row #获取行标
sht.range('A1').column_width #获取列宽
sht.range('A1').row_height #获取行高
sht.range('A1').rows.autofit() #行高自适应
sht.range('A1').columns.autofit() #列宽自适应
sht.range('A1').color=(34,156,65) #给单元格A1设置背景色
sht.range('A1').color #返回单元格颜色的RGB值
sht.range('A1').color = None   #清除单元格颜色
sht.range('B6').formula='=SUM(B2:B5)'   #输入公式,获取相应单元格执行结果
sht.range('A1').formula_array  #获取单元格公式
for i in range(1,11):
    print(sht.range("A"+str(i)).value) #获取A列A1:A10的全部内容
for j in ("A","B","C","D","E"):
     print(sht.range(j+str(1)).value) #获取A1-E1所有的内容
'''插入 、删除 一行'''
sht1.range('a3').api.EntireRow.Delete()     # 会删除 ’a3‘ 单元格所在的行。
sht1.api.Rows(3).Insert()                   # 会在第3行插入一行,原来的第3行下移。
'''插入 、删除 一列'''
sht1.range('c2').api.EntireColumn.Delete()  # 会删除 ’c2‘ 单元格所在的列。
sht1.api.Columns(3).Insert()                # 会在第3列插入一列,原来的第3列右移。(也可以用列的字母表示)

格式操作

b3 = sh1.range("A1")
b3.color = 255,200,255         # 设置单元格的填充颜色
b3.api.Font.ColorIndex = 3     # 设置字体的颜色,具体颜色索引见下方。
b3.api.Font.Size = 24          # 设置字体的大小。
b3.api.Font.Bold = True        # 设置为粗体。
b3.api.HorizontalAlignment = -4108    # -4108 水平居中。 -4131 靠左,-4152 靠右。
b3.api.VerticalAlignment = -4130      # -4108 垂直居中(默认)。 -4160 靠上,-4107 靠下,-4130 
b3.api.NumberFormat = "0.00"          # 设置单元格的数字格式。
"""设置边框"""
# Borders(9) 底部边框,LineStyle = 1 直线。
b3.api.Borders(9).LineStyle = 1
b3.api.Borders(9).Weight = 3                # 设置边框粗细。

# Borders(7) 左边框,LineStyle = 2 虚线。
b3.api.Borders(7).LineStyle = 2
b3.api.Borders(7).Weight = 3

# Borders(8) 顶部框,LineStyle = 5 双点划线。
b3.api.Borders(8).LineStyle = 5
b3.api.Borders(8).Weight = 3

# Borders(10) 右边框,LineStyle = 4 点划线。
b3.api.Borders(10).LineStyle = 4
b3.api.Borders(10).Weight = 3

# Borders(5) 单元格内从左上角 到 右下角。
b3.api.Borders(5).LineStyle = 1
b3.api.Borders(5).Weight = 3

# Borders(6) 单元格内从左下角 到 右上角。
b3.api.Borders(6).LineStyle = 1
b3.api.Borders(6).Weight = 3

"""如果是一个区域的单元格,内部边框设置如下"""
#Borders(11) 内部垂直边线。
b3.api.Borders(11).LineStyle = 1
b3.api.Borders(11).Weight = 3
#Borders(12) 内部水平边线。
b3.api.Borders(12).LineStyle = 1
b3.api.Borders(12).Weight = 3
"""合并拆分单元格"""
sht.range('C8:D8').api.merge()      # 合并单元格 C8 到 D8
sht.range('C8:D8').api.unmerge()    # 拆分单元格。

不同表交互

''跨表格复制、粘贴'''
my_values = sht_1.range('a2:d4').options(ndim=2).value    # 读取二维的数据
sht_2.range('a1').value = my_values

颜色索引

颜色索引:
无色 = -4142,   自动 = -4105,  黑色 = 1,
白色 = 2 ,    红色 = 3,    鲜绿 = 4,
蓝色 = 5 ,    黄色 = 6,    粉红 = 7,
青绿 = 8 ,    深红 = 9,    绿色 = 10,
深蓝 = 11,    深黄 = 12 ,   紫罗兰 = 13,
青色 = 14,    灰色25 = 15,  褐色 = 53,
橄榄 = 52,    深绿 = 51,   深青 = 49,
靛蓝 = 55,    灰色80 = 56,  橙色 = 46,
蓝灰 = 47,    灰色50 = 16,  浅橙色 = 45,
酸橙色 = 43,   海绿 = 50,    水绿色 = 42,
浅蓝 = 41,     灰色40 = 48,   金色 = 44,
天蓝 = 33,     梅红 = 54,   玫瑰红 = 38,
茶色 = 40,    浅黄 = 36,   浅绿 = 35,
浅青绿 = 34,   淡蓝 = 37,   淡紫 = 39,

你可能感兴趣的:(python,开发语言,excel)