打开已有的表格后写入
import xlwings as xw #可以对.xls和.xlsx文件进行修改
#打开Excel程序,默认设置:程序可见,只打开不新建工作薄
app = xw.App(visible=True,add_book=False)
# #新建工作簿 (如果不接下一条代码的话,Excel只会一闪而过,卖个萌就走了)
# wb = app.books.add()
#打开已有工作簿(支持绝对路径和相对路径)
wb = app.books.open(r'D:\python\python_excel\练习.xlsx')
# 返回工作簿的名称
x=wb.name
print(x) #输出为:test.xlsx
# 1-直接对wb的sheet1的A1单元格赋值
#wb.sheets['Sheet1'].range('A1').value='人生' #sheet是工具表名,range是表格的编号,value对应表格的值/内容
# 引用工作簿、工具表
sht=xw.books['练习.xlsx'].sheets['Sheet1'] #工作簿:练习.xlsx;工具表:Sheet1
# 引用单元格
# rng=sht.range('A1')
#写入数据
list = [['a1','a2','a3'],[3,6,9]]
sht.range('A1').value = list #默认是按行输入的,所以该语句输入的范围是A1:B3
wb.save() #保存工作簿
wb.close() #退出工作簿(可省略)
app.quit() #退出Excel
sht.range('A1').value = list
#默认是按行输入的,所以该语句输入的范围是A1:B3
#默认输入字母左对齐,数字右对齐
单个元素按列写入:
#写入数据
list = [[1],[2],[3],[4]]
sht.range('A1').value = list #默认是按行输入的,所以该语句输入的范围是A1:A4
一组数据按列写入
# 一组数据按列写入
list2 = [1,2,3,4,5]
sht.range('A1').options(transpose=True).value = list2
两组数据单独按列写入
# 两组数据按列写入
list1 = ['a','b','c','d','e']
list2 = [1,2,3,4,5]
sht.range(1,1).options(transpose=True).value = list1
sht.range(1,2).options(transpose=True).value = list2
#range(1,2),代表第一行,第2列的单元格
一个按行写,一个按列写
# # 两组数据,一个按行写入,一个按列写入-range(1,2)+expang('right'/'down')
list1 = ['a','b','c','d','e']
list2 = [1,2,3,4,5]
sht.range(1,1).expand('right').value = list1 #第一行写入
sht.range(2,1).expand('down').options(transpose=True).value = list2 #range(1,2),代表第一行,第2列的单元格
一次性写入多行
# 一次性写入多行
sht.range(2, 2).expand('right').value = [[1,2,3,4] ,[11,12,13,14]]
一次性写入多列
# # 一次性写入多列
sht.range(2, 2).options(transpose=True).value = [[1,2,3,4] ,[11,12,13,14]]
一次性写入多列+颜色+字体+填充+边框
# # 一次性写入多列
sht.range(1, 1).options(transpose=True).value = [['a','b','c','d'] ,[1,2,3,4]]
#设置字体,填充色
sht.range(1, 1).expand().api.Font.Color = 0xffffff # 设置字体为白色
sht.range(1, 1).expand().api.Font.Bold = True # 设置为粗体。
sht.range(1, 1).expand().color = (0, 0, 255) # 设置填充色为蓝色
sht.range(1, 1).expand().api.HorizontalAlignment = -4108 # -4108 水平居中。 -4131 靠左,-4152 靠右。
sht.range(1, 1).expand().api.VerticalAlignment = -4130 # -4108 垂直居中(默认)。 -4160 靠上,-4107 靠下, -4130 自动换行对齐。
sht.range(1, 1).expand().api.NumberFormat = "0.00" # 设置单元格的数字格式。
b3=sht.range(1, 1).expand()
"""设置边框"""
# 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(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