每日一模块:操作execl表格openpyxl

常见的模块

牛人博客传送门

操作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')

posted @ 2019-05-08 17:17  Alive_2020  阅读(448)  评论(0编辑  收藏  举报