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

常见的模块

牛人博客传送门python

操做excelapp

  • 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')
相关文章
相关标签/搜索