包括获取excel的sheet名字,设定excel的sheet,读excel,写excel等常规操作。

from openpyxl import Workbook
from openpyxl import load_workbook
from openpyxl.styles import colors, Font
import locale, time class Excel(object):
def __init__(self, excel_file_path):
self.excel_file_path = excel_file_path # 目的在于在类的不同方法中共享此变量
self.wb = load_workbook(excel_file_path) # 表格对象
self.ws = self.wb[self.wb.sheetnames[0]] # 表格的第一个sheet对象
# 获取第一个sheet不能用self.wb.ative,因为这个选择的是默认被打开的那个,如果表格在关闭前是打开的第三个sheet,那么下一次打开的时候就是默认在第三个sheet的
# print(self.ws.title) def get_all_sheet_names(self):
return self.wb.sheetnames
def get_current_sheet_names(self):
return self.ws.title def get_sheet_name_by_index(self, index):
return self.wb.sheetnames[index - 1] def get_excel_file_path(self): # 获取excel表格的路径
return self.excel_file_path def create_sheet1(self, sheet_name, position=None):
try:
if position:
self.wb.create_sheet(sheet_name, position)
else:
self.wb.create_sheet(sheet_name)
self.save() # 向表格里写入东西后一定要保存
return True
except Exception as e:
print(e)
return False def set_sheet_by_name(self, sheet_name):
if sheet_name not in self.wb.sheetnames:
print('%s sheet不存在,请重新设置!' % sheet_name)
return False
self.ws = self.wb[sheet_name]
return True # 根据index设置activate sheet
def set_sheet_by_index(self, index):
if index >= len(self.wb.sheetnames):
return False
self.ws = self.wb[self.get_sheet_name_by_index(index)]
return True # 读值
def get_cell_value(self, row_no, col_no, sheet_name=None):
if sheet_name is not None: # 参数设置了新的sheet
result = self.set_sheet_by_name(sheet_name)
if result == False:
return None
return self.ws.cell(row_no, col_no).value # 读某一行的值
def get_row_values(self, row_no):
cell_values = [] # 因为会返回多个值
for cell in list(self.ws.rows)[row_no - 1]:
cell_values.append(cell.value)
return cell_values #读取某个sheet的所有行中的单元格内容,使用2维的列表进行存储
def get_rows_values(self,sheet_name=None):
all_cell_values = [] # 所有的单元格的值均存入列表
if sheet_name is not None: # 参数设置了新的sheet
result = self.set_sheet_by_name(sheet_name)
if result == False:
return None
for row in list(self.ws.rows):
row_values = []
for cell in row:
row_values.append(cell.value)
all_cell_values.append(row_values)
return all_cell_values # 读某一列的值
def get_col_values(self, col_no, sheet_name=None):
cell_values = [] # 因为会返回多个值
if sheet_name is not None: # 参数设置了新的sheet
result = self.set_sheet_by_name(sheet_name)
if result == False:
return None
for cell in list(self.ws.columns)[col_no - 1]:
cell_values.append(cell.value)
return cell_values # 读某个范围的值
def get_some_values(self, min_row_no, min_col_no, max_row_no, max_col_no, sheet_name=None):
if sheet_name is not None: # 参数设置了新的sheet
result = self.set_sheet_by_name(sheet_name)
if result == False:
return None
values = []
for i in range(min_row_no, max_row_no + 1):
row_values = [] # 用来存一行的值
for j in range(min_col_no, max_col_no + 1):
row_values.append(self.ws.cell(row=i, column=j).value)
values.append(row_values) # 将读到的这一行值加入结果中
return values # 保存
def save(self):
self.wb.save(self.excel_file_path) # 写
def write_cell_value(self, row_no, col_no, value, style=None, sheet_name=None):
if sheet_name is not None: # 参数设置了新的sheet
result = self.set_sheet_by_name(sheet_name)
if result == False:
return None
if style is None:
style = colors.BLACK
elif style == 'red':
style = colors.RED
elif style == 'green':
style = colors.GREEN
self.ws.cell(row=row_no, column=col_no).font = Font(color=style)
self.ws.cell(row=row_no, column=col_no, value=value)
self.save()
return True # 写时间
def write_current_time(self, row_no, col_no, style=None, sheet_name=None):
if sheet_name is not None: # 参数设置了新的sheet
result = self.set_sheet_by_name(sheet_name)
if result == False:
return None
if style is None:
style = colors.BLACK
elif style == 'red':
style = colors.RED
elif style == 'green':
style = colors.GREEN
locale.setlocale(locale.LC_ALL, 'en')
locale.setlocale(locale.LC_CTYPE, 'chinese')
self.ws.cell(row=row_no, column=col_no).font = Font(color=style)
self.ws.cell(row=row_no, column=col_no, value=time.strftime('%Y年%m月%d日 %H时%M分%S秒'))
self.save()
return True if __name__ == '__main__':
from ProVar.ProjConfigVar import *
excel = Excel(ExceldirPath)
print(excel.get_current_sheet_names())

最新文章

  1. android 手机开启debug日志
  2. Django快速开发之投票系统
  3. ES6 — 字符串String
  4. Linux scp 使用详解
  5. hibernate实体的几种状态:
  6. postgre sql 字符串转为integer类型
  7. FMDB多线程读写问题,使用FMDataBaseQueue操作可以解决同时打开一个链接de读写问题
  8. IO-02
  9. python2 urllib2抓取51job网的招聘数据
  10. <训练赛> 垃圾陷阱
  11. python 函数运算先于单目运算
  12. mysql MHA高可用测试
  13. 0011 删除链表的倒数第N个节点
  14. 9宫拼图小游戏(WPF MVVM实现)
  15. go-json处理的问题
  16. map && multimap
  17. ASP.NET中异常处理的注意事项
  18. 用Qstring给char[]数组赋值(转)
  19. 【C#高级编程】笔记之核心C#
  20. BUCT20180814邀请赛 Solution

热门文章

  1. Vue实战041:获取当前客户端IP地址详解(内网和外网)
  2. meshing-做类似ICEM的Y型剖分
  3. python 将数据写入excel
  4. Linux单独打包工具-Ubuntu
  5. docker-compose 布署应用nginx中的create-react-app应用获取环境变量
  6. 程序中的.htaccess文件是做什么的
  7. 项目中一次排序规则的改动,注意到js中map的遍历的顺序
  8. OneDrive
  9. matlab学习——04图与网络(最短路,最小生成树,最大流)
  10. HTTP中的请求头和响应头属性解析