openpyxl操作xlsx
openpyxl操作xlsx
1 创建工作簿和工作表
import openpyxl
# 创建一个Excel workbook 对象
book = openpyxl.Workbook()
# 创建时,会自动产生一个sheet,通过active获取
sh = book.active
# 修改当前 sheet 标题为 工资表
sh.title = '工资表'
# # 保存文件
# book.save('信息.xlsx')
# 增加一个名为 '年龄表' 的sheet,放在最后
sh1 = book.create_sheet('年龄表-最后')
# 增加一个 sheet,放在最前
sh2 = book.create_sheet('年龄表-最前',0)
# 增加一个 sheet,指定为第2个表单
sh3 = book.create_sheet('年龄表2',1)
# 根据名称获取某个sheet对象
sh = book['工资表']
# 给第一个单元格写入内容
sh['A1'] = '你好'
sh['b1'].value = 'hello'
# 获取某个单元格内容
print(sh['A1'].value)
# 根据行号列号, 给第一个单元格写入内容,
# 行号、列号都是从 1 开始
sh.cell(2,2).value = '白月黑羽'
# sheet.cell(row, column, value)
sh.cell(4,3,'sheet.cell(row,col,value)给单元格赋值')
# 根据行号列号, 获取某个单元格内容
print(sh.cell(1, 1).value)
book.save('信息.xlsx')
1.1获取工作表、单元格
- 行号、列号都是从 1 开始
import openpyxl
wb = openpyxl.load_workbook('E:\save\python\openpyxl\三国人物志.xlsx')
# 工作簿工作表
print(wb.sheetnames)
# 选择工作表
sheet = wb['人物']
print(sheet['a2'].value)
print(sheet['b2'].value)
# 用cell获取单元格的值
print(sheet.cell(3,1).value)
print(sheet.cell(row=3, column=2).value)
# 读取多个单元格的值,返回一个元组
row1 = sheet['a1':'c1']
txtFile = open(r'E:\save\python\openpyxl\pyfile\file\三国.txt', 'w') # 新建文本s
for row in sheet.iter_rows(min_row=2, max_col=2, max_row=9):
template = f'姓名:{row[0].value}\t年龄:{str(row[1].value)}\n'
txtFile.write(template)
txtFile.close()
print('程序执行完毕')
2 读取excel
openpyxl.load_workbook()
- 插入行、插入列
sheet 对象的 insert_rows
和 insert_cols
方法,分别用来插入 行
和 列
import openpyxl
wb = openpyxl.load_workbook('income.xlsx')
sheet = wb['2018']
# 在第2行的位置插入1行
sheet.insert_rows(2)
# 在第3行的位置插入3行
sheet.insert_rows(3,3)
# 在第2列的位置插入1列
sheet.insert_cols(2)
# 在第2列的位置插入3列
sheet.insert_cols(2,3)
## 指定不同的文件名,可以另存为别的文件
wb.save('income-1.xlsx')
- 删除行、删除列
sheet 对象的 delete_rows
和 delete_cols
方法,分别用来插入 行
和 列
import openpyxl
wb = openpyxl.load_workbook('income.xlsx')
sheet = wb['2018']
# 在第2行的位置删除1行
sheet.delete_rows(2)
# 在第3行的位置删除3行
sheet.delete_rows(3,3)
# 在第2列的位置删除1列
sheet.delete_cols(2)
# 在第3列的位置删除3列
sheet.delete_cols(3,3)
## 指定不同的文件名,可以另存为别的文件
wb.save('income-1.xlsx')
2.1 按行迭代
from openpyxl import Workbook
book = Workbook()
sheet = book.active
rows = (
(88, 46, 57),
(89, 38, 12),
(23, 59, 78),
(56, 21, 98),
(24, 18, 43),
(34, 15, 67)
)
# append
for row in rows:
sheet.append(row)
# 按行迭代
for row in sheet.iter_rows(min_row=1, min_col=1, max_row=6, max_col=3):
for cell in row:
print(cell.value, end=" ")
print()
book.save(r'E:\save\python\openpyxl\pyfile\file\iterbyrows.xlsx')
2.2 按列迭代
from openpyxl import Workbook
book = Workbook()
sheet = book.active
rows = (
(88, 46, 57),
(89, 38, 12),
(23, 59, 78),
(56, 21, 98),
(24, 18, 43),
(34, 15, 67)
)
for row in rows:
sheet.append(row)
# 按列迭代
for row in sheet.iter_cols(min_row=1, min_col=1, max_row=6, max_col=3):
for cell in row:
print(cell.value, end=" ")
print()
book.save(r'E:\save\python\openpyxl\pyfile\file\iterbycols.xlsx')