pyefun.excel.excel_openpyxl2 源代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020-11-21 21:12
# @Author : Nuonuo
# @Site : 
# @File : 表格.py
# @Software: PyCharm


import openpyxl  # 表格


# 表格openpyxl================================================================
[文档]class 表格: def __init__(self): print('初始化 openpyxl 成功') print('行数0开始 列数1开始') # ''' # 在使用openpyxl模块前,需要了解openpyx中名称的概念: # 在openpyxl中,主要用到三个概念:Workbooks,Sheets,Cells # Workbook:指一个excel工作表; # Sheet:指工作表中的一张表; # Cell:指表中的一个单元格。 # openpyx在读或写时顺序为:打开Workbook,定位Sheet,操作Cell # '''
[文档] def 创建_工作簿对象(self): '''如果写入中文为乱码,可添加参数encoding = ''' self.__wb = openpyxl.Workbook() print('初始化workbok成功') print(self.__wb)
[文档] def 创建_工作表(self, 工作表名称, 位置=None): '默认在最后添加一个工作表 也可以选择位置插入 openpyxl模块暂不支持xls格式文件' self.__sheet = self.__wb.create_sheet(工作表名称, 位置)
[文档] def 读取_工作簿对象(self, path, 只读=False): if path[-4:] == 'xlsx': self.__wb = openpyxl.load_workbook(path, read_only=只读) print('初始化workbok成功') print(self.__wb) self.设置_默认工作表对象() else: print(path, '只支持xlsx格式文件')
[文档] def 设置_默认工作表对象(self): '默认获取第一个表格对象' self.__sheet = self.__wb[self.__wb.sheetnames[0]] print('初始化worksheet成功') print(self.__sheet)
[文档] def 查看_所有工作表名字(self): return self.__wb.sheetnames
[文档] def 选择表(self, 表名): ''' #sheet1 = book.worksheets[n]、sheet2 = book['工作表名称']、sheet3 = book[book.sheetnames[n]]''' print('初始化worksheet成功') self.__sheet = self.__wb[表名]
[文档] def 获取_当前工作表_名称(self): return self.__sheet.title
[文档] def 获取_关键字_行内容(self, 关键字, 关键列, 只取id=False): '遍历查询调用内部行数' 最大行数 = self.__sheet.max_row data = None for i in range(1, 最大行数 + 1): cell_value = self.__sheet.cell(row=i, column=关键列).value if cell_value == 关键字: if 只取id: data = i else: data = self.获取_某行所有值(i) break # data.append(cell_value) if data == None: return '没有查询数据' return data
[文档] def 获取_关键字_列内容(self, 关键字, 关键列, 只取id=False): '遍历查询调用内部行数' 最大列数 = self.__sheet.max_column data = None for i in range(1, 最大列数 + 1): cell_value = self.__sheet.cell(row=关键列, column=i).value if cell_value == 关键字: if 只取id: data = i else: data = self.获取_某列的所有值(i) break # data.append(cell_value) if data == None: return '没有查询数据' return data
[文档] def 获取_某列的所有值(self, ): rows = self.__sheet.max_row column_data = [] for i in range(1, rows + 1): cell_value = self.__sheet.cell(row=i, column=).value column_data.append(cell_value) return column_data
[文档] def 获取_某行所有值(self, ): columns = self.__sheet.max_column row_data = [] for i in range(1, columns + 1): cell_value = self.__sheet.cell(row=, column=i).value row_data.append(cell_value) return row_data
[文档] def 重命名_当前工作表(self, 新表名): self.__sheet.title = 新表名
[文档] def 获取_工作表行数(self): return self.__sheet.max_row
[文档] def 获取_工作表列数(self): return self.__sheet.max_column
[文档] def 获取_单元格内容(self, : int, : int): '''#获取某一单元格内容:cell = sheet.cell(1,2).value、sheet['单元格'].value例如sheet['B1'].value print(sheet.cell(20,20).value)''' return self.__sheet.cell(, ).value
[文档] def 写入_单元格内容(self, : int, : int, ): '行和列从1开始' self.__sheet.cell(row=, column=, value=)
[文档] def 获取_当前表格所有内容(self): # 按行读取 工作表的内容 for row in self.__sheet.rows: for cell in row: print(cell.value, end=' ') print('')
[文档] def 填充_单元格颜色(self, : int, : int, 颜色): '# 1开始 注意:fill_type为填充类型,如果不写的话,则没有效果。 默认纯色填充 颜色代号 白=ffffff 红=ff0000 黄=ffff00 绿=33ff00 蓝=0000ff 黑=000000 紫=9900ff' if 颜色 == '白': ls = 'ffffff' elif 颜色 == '黑': ls = '000000' elif 颜色 == '红': ls = 'ff0000' elif 颜色 == '黄': ls = 'ffff00' elif 颜色 == '绿': ls = '33ff00' elif 颜色 == '蓝': ls = '0000ff' else: ls = 'ffffff' print('输入颜色错误 恢复默认-白色') fill = openpyxl.styles.PatternFill(fill_type='solid', fgColor=ls) self.__sheet.cell(row=, column=).fill = fill
[文档] def 保存_工作簿(self, 文件名): self.__wb.save(文件名)
[文档] def 删除_当前工作表(self, 工作表名=None): '两种方法删除 一种是默认删除当前 一种可以选择' try: if 工作表名 == None: self.__wb.remove(self.__sheet) else: del self.__wb[工作表名] except IndexError: print('最少保留一个表格对象')
[文档] def 退出(self): self.__wb.close()