Excel中的三大对象
- WorkBook:工作簿对象
- Sheet:表单对象
- Cell:表格对象
一、使用openpyxl模块
- openpyxl:主要针对xlsx格式的excel进行读取和编辑。
- 安装模块:pip install --user openpyxl
import openpyxl
class XlsxUtil:
"""
xlsx文件读写操作
写入数据之前,该文件一定要处于关闭状态
"""
def __init__(self, file_path, sheet_name=None):
self.file_path = file_path
self.workbook = None
self.sheet = None
self.file_name = self.file_path.split('\\')[-1]
if sheet_name:
self.sheet_name = sheet_name
else:
self.sheet_name = 'new'
"""
xlsx基础操作
"""
# 打开已有工作簿,选取表单
def open_workbook(self):
self.workbook = openpyxl.load_workbook(self.file_path) # 打开工作簿
self.sheet = self.workbook[self.sheet_name] # 选取表单
# 创建一个工作簿和表单
def new_workbook(self):
self.workbook = openpyxl.Workbook() # 创建一个工作薄
del self.workbook['Sheet'] # 删除默认表单,表单名称是sheet
# 关闭工作簿
def close_workbook(self):
self.workbook.close() # 关闭工作薄
# 在工作簿添加一个表单
def add_sheet(self):
self.workbook.create_sheet(self.sheet_name) # 新增一个sheet表单
# 保存工作簿
def save_workbook(self):
self.workbook.save(self.file_path) # 保存xlsx文件
# 获取最大行总数
def max_row(self):
self.open_workbook() # 打开工作簿
return self.sheet.max_row
# 获取最大列总数
def max_column(self):
self.open_workbook() # 打开工作簿
return self.sheet.max_column
# 删除表单
def delete_sheet(self):
self.open_workbook() # 打开工作簿
del self.workbook[self.sheet_name]
self.save_workbook() # 保存工作簿
# 在第row行,第column列,写入数据
def write_cell(self, row, column, value):
self.open_workbook() # 打开工作簿
self.sheet_name.cell(row=row, column=column, value=value)
# 读取表单第row行、第column列的数据
def get_cell_data(self, row, column):
self.open_workbook() # 打开工作簿
cell = self.sheet.cell(row=row, column=column) # 读取第row行、第column列的数据
return cell.value
"""
xlsx组合操作
"""
# 创建一个工作簿和表单
def create_workbook(self):
self.new_workbook() # 创建一个工作薄
self.add_sheet() # 新增一个sheet表单
self.save_workbook() # 保存xlsx文件
self.close_workbook() # 关闭工作薄
# 在已有的工作簿,添加新的表单页
def add_new_sheet(self):
self.open_workbook() # 打开工作簿
self.add_sheet() # 新增一个sheet表单
self.save_workbook() # 保存xlsx文件
self.close_workbook() # 关闭工作薄
# 读取表单全部数据,按行保存
def get_all_cell_data(self):
self.open_workbook() # 打开工作簿
max_row = self.max_row()
all_cell_data_list = [] # 保存全部数据
for row in range(1, max_row + 1):
row_data_list = self.get_row_data(row) # 按行读取数据
all_cell_data_list.append(row_data_list)
return all_cell_data_list
# 读取表单某一行数据
def get_row_data(self, row):
self.open_workbook() # 打开工作簿
all_row_data = list(self.sheet.rows) # 按行读取数据
row_data = all_row_data[row - 1] # 读取表单某一行数据
row_data_list = []
for cell in row_data:
row_data_list.append(cell.value)
return row_data_list
# 读取表单某一列数据
def get_column_data(self, column):
self.open_workbook() # 打开工作簿
all_column_data = list(self.sheet.columns) # 按列读取数据
column_data = all_column_data[column - 1] # 读取表单某一列数据
column_data_list = []
for cell in column_data:
column_data_list.append(cell.value)
return column_data_list
# 删除表单某一列数据
def delete_column_data(self, column):
self.open_workbook() # 打开工作簿
self.sheet.delete_cols(column, 1) # 删除column列,即从column列开始,总共删除1列
self.save_workbook() # 保存工作簿
# 删除表单某一行数据
def delete_row_data(self, row):
self.open_workbook() # 打开工作簿
self.sheet.delete_rows(row, 1) # 删除row行,即从row行开始,总共删除1行
self.save_workbook() # 保存工作簿
# 通过列标题,返回列号
def get_field_column(self, field_name):
row_data_list = self.get_row_data(1)
count = 0
column_num = False
for row_data in row_data_list:
if row_data == field_name:
column_num = count
else:
count += 1
return column_num + 1
二、使用xlrd库
- xlrd库:从excel中读取数据,支持xls、xlsx
三、使用xlwt库
- xlwt库:对excel进行修改操作,不支持对xlsx格式的修改
四、使用xlutils库
- xlutils库:在xlw和xlrd中,对一个已存在的文件进行修改。