概述
最近在使用Python帮一些客户制作excel自动化操作时总不可避免的使用openyxl,很多的操作都是类似的,于是想将其封装起来,便于之后的使用。如果有读者有类似的想法和需求也可以联系评论告之,水平有限,错误欢迎指正。
easy_openyxl
'''
easy_oepnyxl
主要是为了方便自己日常的使用openyxl,主要是用于封装解决一些简单的问题
-----》
1. 加载excel
2. 获取某一单元格内容
3. 获取某一行内容
4. 获取最大行数,列数
5. 写入内容
6. 获取某一列内容
author:wanghusheng
date:2021/7/31
email:1246529696@qq.com
******可帮助解决各种代码调试,环境配置,日常工作自动化,课程设计,毕业设计指导。******
******有兴趣可联系邮箱。*******
'''
import sys
import os
import openpyxl
class HandleExcel:
def __init__(self,path):
self.path = path
def load_excel(self):
'''
加载excel
'''
open_excel = openpyxl.load_workbook(self.path)#拿到excel的所有内容
return open_excel
def get_cols_value(self,sheetname,col_num):
'''
获取sheetname表中的col_num列的所有数据
:param sheetname: 表名
:param col_num: 列数
:return: list 该列内容的列表
'''
ws = self.load_excel()[sheetname]
col_list = []
for col in ws.iter_cols(min_row=1, min_col = col_num-1,max_col=col_num, values_only=True):
for cell in col:
col_list.append(cell)
return col_list
def get_sheet_data(self,index=None):
'''
:param index: excel中的第几个表,默认是第一个
:return: 获取表中的所有数据
'''
sheet_name = self.load_excel().sheetnames
if index == None:
index = 0
data = self.load_excel()[sheet_name[index]]
return data
def get_cell_value(self,row,cols):
'''
获取某一个单元格内容
'''
data = self.get_sheet_data().cell(row=row,column=cols)
return data
def get_rows(self):
row = self.get_sheet_data().max_row
return row
def get_rows_value(self,row):
'''
获取某一行的内容
'''
row_list = []
for i in self.get_sheet_data()[row]:
row_list.append(i.value)
return row_list
def write_to_excel(self,path: str, sheetStr, data, info=None):
'''
写入数据到excel
:param path: 写入excel文件路径
:param sheetStr: 写入表名
:param info: 表头信息,默认为None 格式["第一列","第二列","第三列"]
:param data: 数据信息 格式为[[]] list[list]
:return: None
'''
# 实例化一个workbook对象
workbook = openpyxl.Workbook()
# 激活一个sheet
sheet = workbook.active
# 为sheet设置一个title
sheet.title = sheetStr
# 添加表头(不需要表头可以不用加)
if info is not None:
data.insert(0, list(info))
# 开始遍历数组
for row_index, row_item in enumerate(data):
for col_index, col_item in enumerate(row_item):
# 写入
sheet.cell(row=row_index + 1, column=col_index + 1, value=col_item)
workbook.save(path)
print('写入成功')