您的位置:首页 > 编程语言 > Python开发

python 操作excel 读写同一个文件

2016-08-21 18:01 573 查看
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2016-08-21 12:54:12
# @Author  : Your Name (you@example.org)
# @Link    : http://example.org # @Version : $Id$

import os
import xlwt
import xlrd
from xlutils.copy import copy
from datetime import date
import time

def getMonAndDay():
today = date.today()
return str(today.month) + 'm' + str(today.day)+'d'

class excelutil(object):
"""docstring for excelutil"""
def __init__(self, fileName):
super(excelutil, self).__init__()
self.fileName = fileName
self.readExcel(fileName)

def readExcel(self,fileName):
if not os.path.exists(fileName):
fileExcel = xlwt.Workbook()
fileExcel.add_sheet(getMonAndDay())
fileExcel.save(self.fileName)

self.rbdata = xlrd.open_workbook(self.fileName)
self.wbdata = copy(self.rbdata)
self.setCurrentTableByIndex(0)

def setCurrentTableByIndex(self,index):
self.rbtable = self.rbdata.sheet_by_index(index)
self.wbtable = self.wbdata.get_sheet(index)

def setCurrentTableByName(self,sheetName):
sheetNames = self.rbdata.sheet_names()
tmpIndex = 0
for x in xrange(0,len(sheetNames)):
if sheetNames[x] == sheetName:
tmpIndex =x
self.wbtable = self.wbdata.get_sheet(tmpIndex)
self.rbtable = self.rbdata.sheet_by_name(sheetName)

def getValues(self,col,row):
if self.rbtable  == None:
return 'current rbtable is null'
# 这个值是rbtable 可能和wbtable值不一样(setValues 没有保存值就不一样) saveExcel()保存一下就会更新
return self.rbtable.cell(row,col).value

def setValues(self,col,row,value):
self.wbtable.write(row,col,value)

def addSheet(self,sheetName,new=False):  #new = true 有重名的加一个时间后缀 强制创建新的
isexist = False
for name in self.rbdata.sheet_names():
if name == sheetName :
if new :
sheetName = sheetName+ str(time.time())
isexist = True
if new or not isexist:
self.wbdata.add_sheet(sheetName)
self.saveExcel()
self.setCurrentTableByName(sheetName)
# self.setCurrentTableByName(0)

def saveExcel(self):
self.wbdata.save(self.fileName)
self.readExcel(self.fileName)
if __name__ == '__main__':

excel = excelutil('demo.xls')
excel.addSheet('sheet2')
# # print excel.getValues(2,0)
excel.setValues(3,50,'dddd')

excel.saveExcel()
print excel.getValues(3,50)


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python excel