xlwt库-写入数据
常用方法
函数名 | 含义 |
xlwt.Workbook() | 创建一个新的Excel文件 |
xlwt.add_sheet(sheet_name) | 创建一个新的工作簿 |
sheet.write(row,col,data) | 向单元格中编写数据 |
workbook.save(path) | 保存数据到文件 |
""" xlwt写入数据 """
import xlwt
# 新建Excel文件
wb = xlwt.Workbook()
# 创建一个工作簿
ws = wb.add_sheet("Test Sheet")
# 向单元格中写入内容
ws.write(0,0,"单元格(1,A1)")
ws.write(1,0,"单元格(2,A1)")
ws.write(2,0,"单元格(3,A1)")
ws.write(0,1,"单元格(1,B1)")
ws.write(0,2,"单元格(1,C1)")
ws.write(2,2,"123")
# 保存文件
wb.save(r"./xlwt测试.xlsx")
文档写入效果:
设置字体样式
常用方法和属性
函数名&属性 | 含义 | 函数名&属性 | 含义 |
xlwt.Font() | 创建字体样式 | xlwt.Borders() | 创建边框样式 |
font.name | 设置字体类型 | border.left | 设置左边框 |
font.color_index | 设置字体颜色 | border.right | 设置右边框 |
font.height | 设置字体大小 | border.top | 设置上边框 |
font.bold | 设置字体加粗 | border.bottom | 设置下边框 |
font.underline | 设置字体下划线 | border.left_colour | 设置左边框颜色 |
font.italic | 设置字体斜体 | border.right_colour | 设置右边框颜色 |
xlwt.Alignment() | 创建字体位置样式 | border.top_colour | 设置上边框颜色 |
alignment.horz | 设置字体横向位置 1左 2中 3右 | border.bottom_colour | 设置下边框颜色 |
alignment.vert | 设置字体纵向位置 0上 1中 2下 | xlwt.Pattern() | 创建背景颜色样式 |
row.height_mismatch | 设置是否开始行高 设置 True为开启 | pattern.pattern | 设置背景样式 |
row.height | 设置单元格行高, 值为256*像素点 | xlwt.XFStyle() | 设置总样式对象, 用于应用到单元格 |
col.width | 设置单元格宽度, 值为256*像素点 | xlwt.easyxf() | 设置总样式对象 |
import xlwt
# 创建excel文件
wb = xlwt.Workbook()
# 创建一个工作簿
ws = wb.add_sheet('样式测试')
# 创建一个字体样式
font = xlwt.Font()
font.name = "微软雅黑" # 设置字体
font.height = 30*20 # 设置字体大小
font.bold = True # 字体加粗
font.underline = True # 下划线
font.italic = True # 斜体
font.colour_index = 2 # 设置字体颜色
# 创建一个样式对象
style = xlwt.XFStyle()
style.font = font
ws.write(1,1,"竹筒饭")
ws.write(1,3,"竹筒饭",style)
wb.save("./样式测试.xlsx")
设置边框样式
import xlwt
# 创建一个excel文件
wb = xlwt.Workbook()
# 创建一个工作簿
ws = wb.add_sheet("边框测试")
# 创建一个边框样式
border = xlwt.Borders()
"""
细实线:1 小粗实线:2
细虚线:3 中细虚线:4
大粗实线:5 双线:6
细点虚线:7
"""
border.top = 1
border.bottom = 6
border.left = 5
border.right = 7
# 设置线的颜色
border.top_colour = 3
border.bottom_colour = 4
border.left_colour = 5
border.right_colour = 2
# 创建一个样式对象
style = xlwt.XFStyle()
style.borders = border
ws.write(1,1,"竹筒饭")
ws.write(1,3,"竹筒饭",style)
wb.save("./边框测试.xlsx")
设置内容位置和背景颜色
import xlwt
# 创建一个excel文件
wb = xlwt.Workbook()
# 创建一个工作簿
ws = wb.add_sheet("位置和背景颜色测试")
# 创建一个位置样式
align = xlwt.Alignment()
# 设置上下位置
# 0上 1中 2下
align.vert = 1
# 设置左右位置
# 1左 2中 3右
align.horz = 2
# 设置单元格高度
ws.row(1).height_mismatch = True # 开启设置高度的权限
ws.row(1).height = 50*50
ws.col(1).width = 50*50
# 创建一个颜色样式
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN # 实心颜色
pattern.pattern_fore_colour = 5
# 创建一个样式对象
style = xlwt.XFStyle()
style.alignment = align
style.pattern = pattern
# 通过easyxf()设置样式
style1 = xlwt.easyxf('font:bold on,colour_index 2;align:vert center,horiz center')
ws.write(1,1,"竹筒饭")
ws.write(1,3,"竹筒饭",style)
ws.write(1,5,"竹筒饭",style1)
wb.save("./位置和背景颜色测试.xlsx")
xlrd库-读取数据
常用方法和属性
函数名&属性 | 含义 |
xlrd.open_workbook(path) | 打开一个excel文件 |
workbook.nsheets | 获取excel工作簿的数量 |
workbook.sheets() | 获取excel所有工作簿 |
workbook.sheet_names() | 获取excel的工作簿名 |
sheet.sheet_by_name(name) | 根据工作簿名获取工作簿 |
sheet.sheet_by_index(num) | 获取第num个工作簿 |
sheet.nrows | 获取工作簿总行数 |
sheet.row_values(num) | 获取第num行数据 |
sheet.col_values(num) | 获取第num列数据 |
sheet.cell(row,col) | 获取指定单元格 |
sheet.row(num)[col] | 获取指定单元格 |
cell.ctype | 获取单元格内容的数据类型 |
sheet.cell_value(row,col) | 获取指定单元格的值 |
cell.value() | 获取单元格的值 |
表格示例:
import xlrd2
# 打开excel文件
wb = xlrd2.open_workbook("./xlrd测试.xlsx")
# 获取excel工作簿数量
print(wb.nsheets) # 3
# 获取所有工作簿,遍历打印
all_ws = wb.sheets()
for i in all_ws:
print(i)
"""
Sheet 0:<Sheet1>
Sheet 1:<Sheet2>
Sheet 2:<Sheet3>
"""
# 获取所有工作簿名
ws_names = wb.sheet_names()
print(ws_names) # ['Sheet1','Sheet2','Sheet3']
# 根据工作簿名获取工作簿
ws1 = wb.sheet_by_name("Sheet1")
print(ws1) # Sheet 0:<Sheet1>
# 根据工作簿索引获取工作簿
ws2 = wb.sheet_by_index(2)
# 获取工作簿总行数
sheet1_rows = ws1.nrows
print(sheet1_rows) # 7
# 获取工作簿第1行数据
sheet1_row_data = ws1.row_values(1)
print(sheet1_row_data) # ['A2', 'B2', 'C2', 'D2', '']
# 获取工作簿第1列数据
sheet1_col_data = ws1.col_values(1)
print(sheet1_col_data) # ['B1', 'B2', 'B3', 'B4', 'B5', 'B6', '']
# 获取E7单元格的数据
cell_E7 = ws1.cell(6, 4)
print(cell_E7) # text:'E7'
# 获取单元格内容的数据类型
print(cell_E7.ctype) # 1
# 获取第1行第2列单元格的数据
print(ws1.row(0)[1]) # text:'B1'
print(ws1.row(0)[1].value) # B1
# 获取单元格的值
print(cell_E7.value) # E7
# 获取所有单元格数据
for row in range(ws1.nrows):
for col in range(ws1.ncols):
print(f"第{row}行{col}列数据:{ws1.cell_value(row,col)}")
xlutils-更新数据
常用方法
函数名 | 含义 |
xlutils.copy.copy(workbook) | 复制指定excel文件 |
表格示例:将红框中的数据补齐
import xlrd2
from xlutils.copy import copy
# 读取excel
wb = xlrd2.open_workbook("./xlrd测试.xlsx")
# 复制excel
wb_copy = copy(wb)
""" 开始修改数据 """
# 获取第1个Sheet
ws = wb_copy.get_sheet(0)
# 增加数据
for row in range(0,6):
ws.write(row, 4, f"E{row+1}")
for col in range(0,4):
ws.write(6, col, f"{chr(ord('A')+col)}7")
wb_copy.save("./xlrd测试-copy.xlsx")
更新效果:新生成了xlrd测试-copy.xlsx