Python实现的Excel文件读写类


Posted in Python onJuly 30, 2015

本文实例讲述了Python实现的Excel文件读写类。分享给大家供大家参考。具体如下:

#coding=utf-8
#######################################################
#filename:ExcelRW.py
#author:defias
#date:2015-4-27
#function:read or write excel file
#######################################################
import xlrd
import xlwt
import xlutils.copy 
import os.path
class XlsEngine():
 """
 The XlsEngine is a class for excel operation
 Usage: 
  xlseng = XlsEngine('filePath') 
 """
 def __init__(self,xlsname):
  """
  define class variable
  """
  self.xls_name = xlsname #file name
  self.xlrd_object = None #workbook object
  self.isopentrue = False #file open flag
 def open(self):
  """
  open a xls file
  Usage:
   xlseng.open()
  """
  try:
   self.xlrd_object = xlrd.open_workbook(self.xls_name)
   self.isopentrue = True
   print('[%s,%s].'%(self.isopentrue,self.xlrd_object))
  except:
   self.isopentrue = False
   self.xlrd_object = None
   print('open %s failed.'%self.xls_name)
 def info(self):
  """
  show xls file information
  Usage:
   xlseng.info()  
  """
  if self.isopentrue == True:
   for sheetname in self.xlrd_object.sheet_names():
    worksheet = self.xlrd_object.sheet_by_name(sheetname)
    print('%s:(%d row,%d col).'%(sheetname,worksheet.nrows,worksheet.ncols))
  else:
   print('file %s is not open.'%self.xls_name)
 def readcell(self,sheetname='sheet1',rown=0,coln=0):
  """
  read file's a cell content
  Usage:
   xlseng.readcell('sheetname',rown,coln)
  """
  try:
   if self.isopentrue == True:
    worksheets = self.xlrd_object.sheet_names()
    if sheetname not in worksheets:
     print('%s is not exit.'%sheetname)
     return False
    worksheet = self.xlrd_object.sheet_by_name(sheetname)
    cell = worksheet.cell_value(rown,coln)
    print('[file:%s,sheet:%s,row:%s,col:%s]:%s.'%(self.xls_name,sheetname,rown,coln,cell))
   else:
    print('file %s is not open.'%self.xls_name)
  except:
   print('readcell is false! please check sheetn rown and coln is right.')
 def readrow(self,sheetname='sheet1',rown=0):
  """
  read file's a row content
  Usage:
   xlseng.readrow('sheetname',rown)
  """
  try:
   if self.isopentrue == True:
    worksheets = self.xlrd_object.sheet_names()
    if sheetname not in worksheets:
     print('%s is not exit.'%sheetname)
     return False    
    worksheet = self.xlrd_object.sheet_by_name(sheetname)
    row = worksheet.row_values(rown)
    print('[file:%s,sheet:%s,row:%s]:%s.'%(self.xls_name,sheetname,rown,row))
   else:
    print('file %s is not open.'%self.xls_name)
  except:
   print('readrow is false! please check sheetn rown is right.')
 def readcol(self,sheetname='sheet1',coln=0):
  """
  read file's a col content
  Usage:
   xlseng.readcol('sheetname',coln)
  """
  try:
   if self.isopentrue == True:
    worksheets = self.xlrd_object.sheet_names()
    if sheetname not in worksheets:
     print('%s is not exit.'%sheetname)
     return False
    worksheet = self.xlrd_object.sheet_by_name(sheetname)
    col = worksheet.col_values(coln)
    print('[file:%s,sheet:%s,col:%s]:%s.'%(self.xls_name,sheetname,coln,col))
   else:
    print('file %s is not open.'%self.xls_name)
  except:
   print('readcol is false! please check sheetn coln is right.')
 def writecell(self,value='',sheetn=0,rown=0,coln=0):
  """
  write a cell to file,other cell is not change
  Usage:
    xlseng.writecell('str',sheetn,rown,coln)
  """
  try:
   if self.isopentrue == True:
    xlrd_objectc = xlutils.copy.copy(self.xlrd_object)
    worksheet = xlrd_objectc.get_sheet(sheetn)
    worksheet.write(rown,coln,value)
    xlrd_objectc.save(self.xls_name)
    print('writecell value:%s to [sheet:%s,row:%s,col:%s] is ture.'%(value,sheetn,rown,coln))
   else:
    print('file %s is not open.'%self.xls_name)
  except:
   print('writecell is false! please check.')
 def writerow(self,values='',sheetn=0,rown=0,coln=0):
  """
  write a row to file,other row and cell is not change
  Usage:
   xlseng.writerow('str1,str2,str3...strn',sheetn,rown.coln)
  """
  try:
   if self.isopentrue == True:
    xlrd_objectc = xlutils.copy.copy(self.xlrd_object)
    worksheet = xlrd_objectc.get_sheet(sheetn)
    values = values.split(',')
    for value in values:
     worksheet.write(rown,coln,value)
     coln += 1
    xlrd_objectc.save(self.xls_name)
    print('writerow values:%s to [sheet:%s,row:%s,col:%s] is ture.'%(values,sheetn,rown,coln))
   else:
    print('file %s is not open.'%self.xls_name)
  except:
   print('writerow is false! please check.')
 def writecol(self,values='',sheetn=0,rown=0,coln=0):
  """
  write a col to file,other col and cell is not change
  Usage:
   xlseng.writecol('str1,str2,str3...',sheetn,rown.coln)
  """
  try:
   if self.isopentrue == True:
    xlrd_objectc = xlutils.copy.copy(self.xlrd_object)
    worksheet = xlrd_objectc.get_sheet(sheetn)
    values = values.split(',')
    for value in values:
     worksheet.write(rown,coln,value)
     rown += 1
    xlrd_objectc.save(self.xls_name)
    print('writecol values:%s to [sheet:%s,row:%s,col:%s] is ture.'%(values,sheetn,rown,coln))
   else:
    print('file %s is not open.'%self.xls_name)
  except:
   print('writecol is false! please check.')
 def filecreate(self,sheetnames='sheet1'):
  """
  create a empty xlsfile
  Usage:
   filecreate('sheetname1,sheetname2...')
  """
  try:
   if os.path.isfile(self.xls_name):
    print('%s is exit.'%self.xls_name)
    return False
   workbook = xlwt.Workbook()
   sheetnames = sheetnames.split(',')
   for sheetname in sheetnames:
    workbook.add_sheet(sheetname,cell_overwrite_ok=True)
   workbook.save(self.xls_name)
   print('%s is created.'%self.xls_name)
  except:
   print('filerator is false! please check.')
 def addsheet(self,sheetnames='sheet1'):
  """
  add sheets to a exit xlsfile
  Usage:
   addsheet('sheetname1,sheetname2...')
  """
  try:
   if self.isopentrue == True:
    worksheets = self.xlrd_object.sheet_names()
    xlrd_objectc = xlutils.copy.copy(self.xlrd_object)
    sheetnames = sheetnames.split(',')
    for sheetname in sheetnames:
     if sheetname in worksheets:
      print('%s is exit.'%sheetname)
      return False
    for sheetname in sheetnames:
     xlrd_objectc.add_sheet(sheetname,cell_overwrite_ok=True)
    xlrd_objectc.save(self.xls_name)
    print('addsheet is ture.')
   else:
    print("file %s is not open \n"%self.xls_name)
  except:
   print('addsheet is false! please check.')
"""
  def chgsheet(self,sheetn,values):
  def clear(self):
""" 
if __name__ == '__main__': 
 #初始化对象
 xlseng = XlsEngine('E:\\Code\\Python\\test2.xls')
 #新建文件,可以指定要新建的sheet页面名称,默认值新建sheet1
 #print("\nxlseng.filecreate():")
 #xlseng.filecreate('newesheet1,newesheet2,newesheet3')
 #打开文件
 print("xlseng.open():")
 xlseng.open()
 #添加sheet页
 print("\nxlseng.addsheet():")
 xlseng.addsheet('addsheet1,addsheet2,addsheet3')
 #输出文件信息
 print("\nxlseng.info():")
 xlseng.info()
 #读取sheet1页第3行第3列单元格数据(默认读取sheet1页第1行第1列单元格数据)
 print("\nxlseng.readcell():")
 xlseng.readcell('sheet1',2,2)
 #读取sheet1页第2行的数据(默认读取sheet1页第1行的数据)
 print("\nxlseng.readrow():")
 xlseng.readrow('sheet1',1)
 #读取sheet1页第3列的数据(默认读取sheet1页第1列的数据)
 print("\nxlseng.readcol():")
 xlseng.readcol('sheet1',2)
 #向第一个sheet页的第2行第4列写字符串数据‘I am writecell writed'(默认向第一个sheet页的第1行第1列写空字符串)
 print("\nxlseng.writecell():")
 xlseng.writecell('I am writecell writed',0,1,3)
 #向第一个sheet页写一行数据,各列的值为‘rowstr1,rowstr2,rowstr3',从第3行第4列开始写入(默认向第一个sheet页写一行数据,值为‘',从第1行第1列开始写入)
 print("\nxlseng.writerow():")
 xlseng.writerow('rowstr1,rowstr2,rowstr3',0,2,3)
 #向第一个sheet页写一列数据,各行的值为‘colstr1,colstr2,colstr3,colstr4',从第4行第4列开始写入(默认向第一个sheet页写一列数据,值为‘',从第1行第1列开始写入)
 print("\nxlseng.writecol():")
 xlseng.writecol('colstr1,colstr2,colstr3,colstr4',0,3,3)

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python中的数据对象持久化存储模块pickle的使用示例
Mar 03 Python
Python多线程实现同步的四种方式
May 02 Python
浅谈Python中的私有变量
Feb 28 Python
python实现txt文件格式转换为arff格式
May 31 Python
对Python模块导入时全局变量__all__的作用详解
Jan 11 Python
Python3实现的反转单链表算法示例
Mar 08 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
May 16 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
Dec 04 Python
python 正则表达式参数替换实例详解
Jan 17 Python
python实现数字炸弹游戏
Jul 17 Python
python海龟绘图之画国旗实例代码
Nov 11 Python
利用python调用摄像头的实例分析
Jun 07 Python
Djang中静态文件配置方法
Jul 30 #Python
Python实现根据IP地址和子网掩码算出网段的方法
Jul 30 #Python
Python实现配置文件备份的方法
Jul 30 #Python
Python统计文件中去重后uuid个数的方法
Jul 30 #Python
Python利用正则表达式匹配并截取指定子串及去重的方法
Jul 30 #Python
Python实现简单拆分PDF文件的方法
Jul 30 #Python
使用Python脚本生成随机IP的简单方法
Jul 30 #Python
You might like
PHP中调用ASP.NET的WebService的代码
2011/04/22 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
PHP集成百度Ueditor 1.4.3
2014/11/23 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
(function(){})()的用法与优点
2007/03/11 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
javascript创建createXmlHttpRequest对象示例代码
2014/02/10 Javascript
查找页面中所有类为test的结点的方法
2014/03/28 Javascript
js实现拖拽效果
2015/02/12 Javascript
JS实现网页滚动条感应鼠标变色的方法
2015/02/26 Javascript
JQuery中上下文选择器实现方法
2015/05/18 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
JavaScript 冒泡排序和选择排序的实现代码
2016/09/03 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
JavaScript实现的鼠标跟随特效示例【2则实例】
2018/12/22 Javascript
利用vue重构有赞商城的思路以及总结整理
2019/02/21 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
Python中input和raw_input的一点区别
2014/10/21 Python
Python选课系统开发程序
2016/09/02 Python
python操作excel的方法(xlsxwriter包的使用)
2018/06/11 Python
Python for循环生成列表的实例
2018/06/15 Python
python读写LMDB文件的方法
2018/07/02 Python
Python实现的连接mssql数据库操作示例
2018/08/17 Python
在python中安装basemap的教程
2018/09/20 Python
Python实现查找字符串数组最长公共前缀示例
2019/03/27 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
python3 求约数的实例
2019/12/05 Python
关于Tensorflow分布式并行策略
2020/02/03 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
2020/02/28 Python
简历中个人自我评价范文
2013/12/26 职场文书
中学生演讲稿
2014/04/26 职场文书
银行开户授权委托书格式
2014/10/10 职场文书
2016年艾滋病宣传活动总结
2016/04/01 职场文书
安装配置mysql及Navicat prenium的详细流程
2021/06/10 MySQL
Python实现Excel文件的合并(以新冠疫情数据为例)
2022/03/20 Python