excel文件操作
excel文件读操作
1.获取工作簿对象
openpyxl.load_workbook(文件路径)
workbook = openpyxl.load_workbook('files/demo2.xlsx')
2.获取工作表
-
获取当前工作簿中所有的工作表的表名
names = workbook.sheetnames print(names)
-
获取工作表对象
-
工作簿对象[表名]
student_sheet = workbook['学生表'] teacher_sheet = workbook['老师表'] course_sheet = workbook['课程表']
-
获取活跃表: 工作簿对象.active
student_sheet = workbook.active
-
3.表相关操作
-
获取最大行数和列数
- 表对象.max_column - 最大列数
- 表对象.max_row - 最大行数
m_col = student_sheet.max_column m_row = student_sheet.max_row
-
获取单元格
-
表对象.cell(行号, 列号) - 获取指定位置单元格(行号和列号都是从1开始的数字)
cell1 = student_sheet.cell(2, 2) print(cell1) # 获取单元格内容:单元格对象.value print(cell1.value)
-
表对象[位置]
cell2 = student_sheet['D2'] print(cell2.value)
-
读操作练习
import openpyxl
def read_excel(path):
# 获取工作簿
wb = openpyxl.load_workbook(path)
# 获取表
sheet = wb.active
# 最大行数和列数
m_row, m_col = sheet.max_row, sheet.max_column
# 获取数据
all_data = []
for row in range(1, m_row+1):
line_data = []
for col in range(1, m_col+1):
value = sheet.cell(row, col).value
line_data.append(value)
all_data.append(line_data)
return all_data
def read_col_data(file, col):
pass
if __name__ == '__main__':
result = read_excel('files/小宝剑大药房2018年销售数据.xlsx')
print(result)
excel文件写操作
1.获取工作簿
-
获取已经存在的excel文件对应的工作簿
wb = openpyxl.load_workbook('files/demo2.xlsx')
-
创建新的工作簿
# wb = openpyxl.Workbook() # 如果文件存在直接打开,不存在新建 if os.path.exists('files/demo4.xlsx'): wb = openpyxl.load_workbook('files/demo4.xlsx') else: wb = openpyxl.Workbook()
2. 基于工作表的写操作
-
添加工作表: 工作簿对象.create_sheet()
# sheet1 = wb.create_sheet() # sheet2 = wb.create_sheet('学生表') # sheet3 = wb.create_sheet('老师表', 0) # 有就直接获取表,没有才创建表 if '老师表' in wb.sheetnames: teacher_sheet = wb['老师表'] else: teacher_sheet = wb.create_sheet('老师表', 0)
-
删除工作表: 工作簿对象.remove(表对象)
if 'Sheet' in wb.sheetnames: wb.remove(wb['Sheet'])
3.基于单元格的写操作 - 修改单元格内容
-
单元格对象.value = 新内容
teacher_sheet.cell(2, 1).value = '小明'
-
将单元格内容赋值为None,就是在删除单元格
teacher_sheet.cell(1, 2).value = None
-
在文件的最后添加一行数据
data = ['小花', '119', 'python', '女'] row = teacher_sheet.max_row + 1 for col in range(1, len(data) + 1): teacher_sheet.cell(row, col).value = data[col-1]
4.保存文件
工作簿对象.save(文件路径)
wb.save('files/demo4.xlsx')