Python实现的Excel文件读写类
作者:defias 发布时间:2022-03-15 19:43:24
标签:Python,Excel
本文实例讲述了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程序设计有所帮助。


猜你喜欢
- 从内部来看,每个session都只是一个普通的Django model(在 django.contrib.sessions.models 中
- 在之前一篇文章中我介绍了通过定义Response宏的方式来实现动态改变模板文件路径以实现主题功能: laravel实现模板主题功能,但后来我
- 本文通过Python3+PyQt5实现《python Qt Gui 快速编程》这本书13章程序Rich文本的行编辑,可以通过鼠标右键选择对文
- 前言本文使用 cpu 的 tensorflow 2.8 来完成 GRU 文本生成任务。如果想要了解文本生成的相关概念,可以参考我之前写的文章
- 如果是django2.0 必须下载xadmin2.0 不然很多地方不兼容xadmin2.0下载地址https://github.com/ss
- 1.查看binlog是否开启show variables like '%log_bin%';2.查看数据文件存放路径:bin
- 不知道算不算DW4的大BUG. DW4实际的运行如下: 读注册表中HKEY_CURRENT_USER/
- 注:使用的是Python2.7。一、实例方法实例方法就是类的实例能够使用的方法。如下:class Foo:  
- Python内存管理一、对象池1.小整数池系统默认创建好的,等着你使用概述:整数在程序中的使用非常广泛,Python为了优化速度,使用了小整
- help函数是python的一个内置函数,在python基础知识中介绍过什么是内置函数,它是python自带的函数,任何时候都可以被使。he
- 如下所示:fp = open(''test2.txt','w') #打开你要写得文件test2.tx
- 问题你想在一个消息传输层如 sockets 、multiprocessing connections 或 ZeroMQ 的基础之上实现一个简
- php 生成短网址 原理: 1.将原网址做crc32校验,得到校验码。 2.使用sprintf('%u') 将校验码转为无符
- 注:本文只讨论技术不涉及商业,如有侵权请告知,未经本人同意转载后果自负!本文是通过浏览器端ajax,node端request-json进行爬
- SqlServer 在事务中获得自增ID实例代码在sqlserver 中插入数据时,如何返回自增的主键ID,方式有很多,这里提
- 本文实例讲述了CentOS7安装mysql5.7解压缩版的方法。分享给大家供大家参考,具体如下:1.下载安装包http://dev.mysq
- 目录一、路由配置二、vue页面嵌套三、嵌套联系一、路由配置const routes = [ { pat
- 前言最近因为工作需要 用selenium做了一个QQ邮箱的爬虫(登录时部分帐号要滑动解锁),先简单记录一下。这个问题先可以分为两个部分:1.
- 摘要:对动态SQL的程序开发进行了总结,并结合笔者实际开发经验给出若干开发技巧。 关键词:动态SQL,PL/SQL,高性能 1. 静态SQL
- 前言最近碰到了照片识别的场景,正好使用了face_recognition项目,给大家分享分享。face_recognition项目能做的很多