python处理excel
2021/5/9 14:55:22
本文主要是介绍python处理excel,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#安装openpyxl pip install openpyxl import openpyxl class ExcelAuto: """自动化处理excel程序,需提前安装openpyxl""" def __init__(self): """初始化信息""" # 读取文件的路径 self.path_name = "" # 存储excel中的信息 self.student_list = [] # 用于设置列名 self.letter="ABCDEFGHIJKLMNOPQRSTUVWXYZ" # 参数 :sheet_index 默认第一行是放的表头 # 参数 :sheet_row 默认数据是从第二开始 self.sheet_index = 1 self.sheet_row = 2 def _get_workbook_allsheets(self): """获取文件对象和所有工作表名称""" self.wb = openpyxl.load_workbook(self.path_name) self.allsheets = self.wb.get_sheet_names() def get_all_data(self,path_name,index=1,row=2): """获取当前excel中的所有数据 参数1: 文件路径 参数2: index 默认第一行是放的表头 参数3: row 默认数据是从第二开始 返回值:以[{}, {}, {}]格式返回数据 """ self.sheet_index = index self.sheet_row = row self.path_name = path_name self._get_workbook_allsheets() for i in self.allsheets: self.student_list+=self._get_data(i) return self.student_list def get_specified_sheet_data(self,path_name,sheet_name="",index=1,row=2): """获取excel中指定的所有sheet中的数据 参数1: 文件路径 参数2: 指定sheet的名字,默认是第一个表 参数3: index 默认第一行是放的标题 参数4: row 默认数据是从第二开始 返回值:以[{}, {}, {}]格式返回数据 """ self.sheet_index = index self.sheet_row = row self.path_name = path_name self._get_workbook_allsheets() if sheet_name == "": self.student_list = self._get_data(self.allsheets[0]) return self.student_list else: if sheet_name not in self.allsheets: print("输入的表名有误") return False else: self.student_list = self._get_data(sheet_name) return self.student_list def _get_data(self,sheetname): """获取当前sheet中的所有数据 参数1:sheetname 表名 """ index = self.sheet_index row = self.sheet_row ws = self.wb.get_sheet_by_name(sheetname) student_list=[] for i in range(row,ws.max_row+1): if ws.max_column>=26: pass else: dict_tmp = {} for j in range(ws.max_column): key_name=ws[self.letter[j]+str(index)].value item_name=self.letter[j]+str(i) dict_tmp[key_name] = ws[item_name].value student_list.append(dict_tmp) return student_list def save_to_excel(self,inputData,outPutFile,sheet_name="Sheet1"): """把字典写入excel中 参数1: inputData格式是 [{}, {}, {}] 参数2: inputData是输出文件名字 参数3: sheet名,默认Sheet1 """ wb = openpyxl.Workbook() sheet = wb.active sheet.title =sheet_name i = 0 for name in inputData[0].keys(): sheet[self.letter[i]+str(1)].value = name i=i+1 j=1 for item in inputData: k = 0 for key in item: sheet[self.letter[k]+str(j+1)].value = item[key] k = k+1 j = j+1 wb.save(outPutFile) print(f"{outPutFile}:数据填写完毕!") def split_excel(self,path_name,specified_header): """按指定表头拆分excel 参数1: path_name 原excel文件路径 参数2: 指定表头 """ self.get_all_data(path_name) list_key = [] dict_tmp = {} for i in self.student_list: if i[specified_header] not in list_key: list_key.append(i[specified_header]) dict_tmp[i[specified_header]]=[] dict_tmp[i[specified_header]].append(i) for key,value in dict_tmp.items(): key = key +".xlsx" self.save_to_excel(value,key) if __name__ == "__main__": fn_a = r"a.xlsx" ExcelAuto().split_excel(fn_a,"班级")
这篇关于python处理excel的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享
- 2024-12-19使用python 把docx转为pdf文件有哪些方法?-icode9专业技术文章分享
- 2024-12-19python怎么更换换pip的源镜像?-icode9专业技术文章分享
- 2024-12-19Python资料:新手入门的全面指南
- 2024-12-19Python股票自动化交易实战入门教程
- 2024-12-19Python股票自动化交易入门教程
- 2024-12-18Python量化入门教程:轻松掌握量化交易基础知识