搭建数据驱动框架第一步-实现一个构造函数,将对Excel文件的基本操作API都封装进去
Python处理Excel常用操作就是读和写,我的需求是需要在原excel文件中进行读写操作。共用到了两个模块xlrd和openpyxl,这两个模块都是需要自己去安装的。openpyxl只能用来处理 Excel 2007 及以上版本的 excel 文件,也就是 .xlsx/.xlsm 格式的表格文件,它对文件大小没有限制;其中xlwt针对Ecxec2007之前的版本,即.xls文件,其要求单个sheet不超过65535行。
1 写一个包,包的名字叫Util
2 建立一个模块Excel,Excel.py
3 pip install openpyxl==2.4.5
4 类名:ParseExcel
#实现一个构造函数,参数使用excel的绝对路径,并保存到实例变量中
from openpyxl import *
from openpyxl.styles import Border, Side, Font
import time
import datetime class ParseExcel(object):
def __init__(self,excel_file_path):
self.excel_file_path=excel_file_path #加载这个excel文件,并保存到实例变量self.workbook中
class ParseExcel(object):
def __init__(self,excel_file_path):
self.excel_path=excel_file_path
self.workbook=load_workbook(excel_file_path) #实现self.sheet为excel文件的第一个sheet
class ParseExcel(object):
def __init__(self,excel_file_path):
self.excel_path=excel_file_path
self.workbook=load_workbook(excel_file_path)
self.sheet=self.workbook.active # 通过sheet名称获取sheet对象
def get_sheet_by_name(self, sheet_name):
self.sheet=self.workbook.get_sheet_by_name(sheet_name)
return self.sheet # 通过sheet索引获取sheet对象
def get_sheet_by_index(self, sheet_index):
self.sheet=self.workbook.get_sheet_by_index(sheet_index)
return self.sheet # 设置当前要操作的sheet对象,使用index来获取相应的sheet
def set_sheet_by_index(self, sheet_index):
self.sheet=self.workbook.get_sheet_by_index(sheet_index) # 设置当前要操作的sheet对象,使用sheet名称来获取相应的sheet
def set_sheet_by_name(self, sheet_name):
self.sheet=self.workbook.get_sheet_by_name(sheet_name) # 获取默认sheet中最大行数
def get_max_row_no(self):
return self.sheet.max_row # 获取默认 sheet 的最大列数
def get_max_col_no(self):
return self.sheet.max_column # 获取默认sheet的最小(起始)行号
def get_min_row_no(self):
return self.sheet.min_row # 获取默认sheet的最小(起始)列号
def get_min_col_no(self):
return self.sheet.min_column # 获取默认 sheet 的所有行对象,
def get_all_rows(self):
#rows=[]
#for row in self.sheet.iter_rows():
#rows.append(row)
#return rows self.sheet=self.sheet.rows()
return list(self.sheet) # 获取默认sheet中的所有列对象
def get_all_cols(self):
#cols=[]
#for cloumn in self.sheet.iter_cols():
#cols.append(column)
#return cols self.sheet=self.sheet.columns()
return list(self.sheet) # 从默认sheet中获取某一行,第一行从0开始
def get_single_row(self, row_no):
return self.sheet.get_all_rows()[row_no] # 从默认sheet中获取某一列,第一列从0开始
def get_single_col(self, col_no):
return self.sheet.get_all_cols()[col_no] # 从默认sheet中,通过行号和列号获取指定的单元格,注意行号和列号从1开始
def get_cell(self, row_no, col_no):
return self.sheet.cell(row=row_no,column=col_no) # 从默认sheet中,通过行号和列号获取指定的单元格中的内容,注意行号和列号从1开始
def get_cell_content(self, row_no, col_no):
return self.sheet.cell(row=row_no,column=col_no).value # 从默认sheet中,通过行号和列号向指定单元格中写入指定内容,注意行号和列号从1开始
# 调用此方法的时候,excel不要处于打开状态
def write_cell_content(self, row_no, col_no, content, font=None):
self.sheet.cell(row=row_no,column=col_no,value=content,font=None)
self.workbook.save(self.excel_file_path) # 从默认sheet中,通过行号和列号向指定单元格中写入当前日期,注意行号和列号从1开始
# 调用此方法的时候,excel不要处于打开状态
def write_cell_current_time(self, row_no, col_no):
self.sheet.cell(row=row_no,column=col_no,value=time.strftime("%Y:%m:%d",time.localtime()),font=None)
self.workbook.save(self.excel_file_path) def save_excel_file(self):
self.wrokbook.save(self.excel_file_path) if __name__=="__main__":
pe=ParseExcel("c:\\excel.xlsx")
pe.set_sheet_by_index(0)
#print pe.get_default_name()
pe.set_sheet_by_name("Sheet2")
#print pe.get_default_name()
print pe.get_sheet_by_name("Sheet2")
print pe.get_sheet_by_index(0)
print 'max row:', pe.get_max_row_no()
print pe.get_all_rows() # 获取所有行对象
print pe.get_all_rows()[0] # 获取第一行,获取某个行对象
print pe.get_all_rows()[0][1] # 获取第一行,第二列的单元格对象
print pe.get_all_rows()[0][1].value # 获取第一行,第二列单元格对象的值 print pe.get_all_cols() # 获取所有行对象
print pe.get_all_cols()[0] # 获取第一列,获取某个列对象
print pe.get_all_cols()[0][1] # 获取第一列的第二个单元格某个单元格对象
print pe.get_all_cols()[0][1].value # 获取第一列的第二个单元格的值 print pe.get_max_col_no()
print pe.get_min_row_no()
print pe.get_min_col_no()
print pe.get_all_rows()[0]
print len(pe.get_all_rows())
for cell in pe.get_all_rows()[0]:
print cell.value
print pe.get_all_cols()
for col in pe.get_all_cols()[0]:
print col.value
for cell in pe.get_single_row(0):
print cell.value
for col in pe.get_single_col(0):
print col.value
print pe.get_cell(1, 1)
print pe.get_cell_content(1, 1) pe.write_cell_content(4, 2, "wangjing")
print pe.get_cell_content(4, 2)
pe.write_cell_current_time(1, 1)
print pe.get_cell_content(1, 1)
搭建数据驱动框架第一步-实现一个构造函数,将对Excel文件的基本操作API都封装进去的更多相关文章
- [Angularjs] 第一步开始一个项目
[Angularjs] 第一步开始一个项目 一.什么是angularjs angularjs是2009年兴起的,目前由Google维护一个采用mvc模式的js框架,很多时候用来创建单页面应用.我也经常 ...
- 零元学Expression Blend 4 - Chapter 3 熟悉操作第一步(制作一个猴子脸)
原文:零元学Expression Blend 4 - Chapter 3 熟悉操作第一步(制作一个猴子脸) 本篇内容会教你如何使用笔刷.钢笔.渐层以及透明度的调整,还有如何转化图层和路径,最重要的是要 ...
- XLConnect:一个用R处理Excel文件的高效平台
code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...
- 如何用 php 读取一个很大的 excel 文件。
这个程序是用php 读取一个很大的excel文件, 先将 excel 文件保存成csv 文件, 然后利用 迭代器 逐行读取 excel 单元格的值, 拿到值以后 做相应处理,并打印结果. <?p ...
- (大数据工程师学习路径)第一步 Linux 基础入门----目录结构及文件基本操作
Linux 目录结构及文件基本操作 介绍 1.Linux 的文件组织目录结构. 2.相对路径和绝对路径. 3.对文件的移动.复制.重命名.编辑等操作. 一.Linux 目录结构 在讲 Linux 目录 ...
- springMVC,spring,mybatis全注解搭建框架--第一步,让框架跑起来
自己从事java开发工作也有一年多了,自己却没有亲手搭建一个完整的框架.于是今天自己动手搭建一个,过程中遇到一些问题,倒腾了大半天终于搞定了. 现在给大家分享一下过程,自己也记录下来,以后学习参考使用 ...
- Yii框架第一步-- 安装
0.首次安装请看 这里 下面的为非首次安装,不需要token的步骤 1.下载composer 官网下载: https://getcomposer.org/download/ 2.开启PHP的opens ...
- None.js 第一步 开启一个服务 hello world
引入 http 模块 var http = require('http'); 创建服务器 http.createServer(function (request, response) { // 发送一 ...
- A框架第一步,传递不同参数.主程序执行对应方法
访问: www.test.com/admin 1============后台目录:admin (确保单一入口) --有入口文件index.php <?phprequire '../A/a.php ...
随机推荐
- BDD数据集(mask_rcnn)1
mask_rcnn中ballon的例子 classsification VS semantic segmention VS object detection VS instance segmentio ...
- Centos安装Python各版本解释器并配置pip
Centos7.3安装Python3.7 Python3.7貌似又多了新的依赖,所以按照安装之前的套路安装在配置pip阶段就会出问题,比如: ModuleNotFoundError: No modul ...
- jQuery 查找元素1
jQuery 查找元素1 1. id // 通过id查找 $('#id') 2. class <div class='c1'></div> // 通过class查找 $('.c ...
- Shell 终端ANSI控制码
Shell 系统交互参数整理 输出颜色 格式: \033[字背景颜色;字体颜色m字符串\033[0m 背景颜色 字体颜色 40: 黑 30: 黑 41: 红 31: 红 42: 绿 32: 绿 43: ...
- FL Studio的模式剪辑是什么?
FL Studio里的模式剪辑功能里,有一个模式菜单.模式剪辑菜单和模式选择器面板.模式可以作为模式剪辑放置在播放列表中,模式剪辑的名称显示在剪辑的标题栏中.(注意:模式注释和事件自动化可以共享相同的 ...
- Canonical Coin Systems【完全背包】
问题 C: Canonical Coin Systems 时间限制: 1 Sec 内存限制: 128 MB 提交: 200 解决: 31 [提交] [状态] [命题人:admin] 题目描述 A ...
- Git 与 GitHub 入门级
今天我们来搞一下Git 这东西虽然没啥搞头儿,但是开发当中还必须得会用,谁让你我都是苦逼的开发呢~~~~ 一.下载与安装 这玩意简单,给你赋个图片,自己研究一下~~~~ 1.官网:https://gi ...
- _skill,_skill_category
_skill,_skill_category -- 自定义商业技能-- 小技巧:配合增加自定义商业技能._add skill [ID _skill `skillId`商业技能ID `skillIcon ...
- maven+springmvc出现:java.sql.SQLException: Unknown system variable 'query_cache_size'
连接mysql时一直出现以下的错误: org.springframework.web.util.NestedServletException: Request processing failed; n ...
- 函数式语言简介(functional language)
1.什么是函数式语言? 是一种非冯·诺伊曼式的程序设计语言.函数式语言主要成分是原始函数.定义函数和函数型.这种语言具有较强的组织数据结构的能力,可以把某一数据结构(如数组)作为单一值处 ...