常见的模块
牛人博客传送门
操作excel
- openpyxl 处理2010及以后
- xlwt 老版本
创建excel文件,然后写入内容
from openpyxl import Workbook
"""
犯得错: 必须所有写完后再关闭
"""
# write
wb = Workbook()
ws = wb.create_sheet('first', 0)
# 获取excel文件的所有sheet以列表返回
sheet_list = wb.sheetnames
# 获取excel中每个sheet
for i in wb:
print(i)
# 直接获取指定sheet对象
sheet1 = wb['first']
# 指定单元格写入数据
sheet1['a1'] = '姓名'
sheet1['b1'] = '年龄'
# 或者通过cell函数来实现
sheet1.cell(row=2, column=1, value='xxx')
sheet1.cell(row=2, column=2, value='30')
sheet2 = wb.create_sheet('第二个表格', 1)
# 如果行内有内容,从下一行空白行开始写入
# 一次添加1行写入
row = range(1, 6)
sheet2.append(row)
# 一次添加多行
rows = [
['姓名', '年龄', '性别'],
['sun', '30', 'male'],
['xiu', '30', 'male'],
['wen', '30', 'male'],
]
for i in rows:
sheet2.append(i)
wb.save('manage.xlsx')
# 获取有效的【写入内容】最大行和列
print(sheet2.rows) # 所有有效行<generator object Worksheet._cells_by_row at 0x000001CA5A275888>
print(sheet2.columns) # <generator object Worksheet._cells_by_col at 0x0000026B99345888>
print(sheet2.max_row) # 5
print(sheet2.max_column) # 5
# 获取每一行数据
for row in sheet2.rows:
for val in row:
print(val.value)
# 获取某一行数据
for cell in list(sheet2.rows)[0]: # 第一行数据
print(cell.value)
wb.save('manage.xlsx')
读
from openpyxl import load_workbook
wb = load_workbook(filename='manage.xlsx', read_only=False, data_only=True)
# data_only = True 表示单元格的值是由公式计算的,返回的是值,而不是公式
sheets = wb.sheetnames # 获取excel文件中所有的sheet名列表
print(sheets)
sheet = wb['first'] # 指定某个sheet表格
# 获取内容
val = sheet['a1'].value
print(val)
# 赋值
sheet['b2'] = 30
sheet.title = '我改变了sheet名'
wb.save('manage.xlsx')