设为首页 收藏本站
查看: 222|回复: 0

[经验分享] python 读取excel(ZT)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-4-30 11:32:31 | 显示全部楼层 |阅读模式
import win32com.client
import os
import time
class Excel:
def __init__(self, filename=None, configuration = None):
self.xApp = win32com.client.Dispatch(' Excel.Application ')
self.Config = configuration
#start info.  
#reading configuation file   
print "Setting standard font: %s" % self.Config['FONT']
self.xApp.StandardFont = self.Config['FONT']
print "Setting standard size: %s" % str(TextSize)     
self.xApp.StandardFontSize = TextSize
#check configuration file        
if os.path.exists( self.Config['DATAPATH'] ) :
pass
else:
print "Error: The given data path doesn't exist"
self.close()
# name of report
if filename:
self.Filename = filename
try:
self.xBook = self.xApp.Workbooks.Open(filename)
except:
print "Error: Open file %s failed" % filename
else:
self.xBook = self.xApp.Workbooks.Add()
reportname = self.Config['PROJECT']+ '_R'+ self.Config['VERSION'] + '_' + time.strftime("%Y%m%d") + '_IssueReport'
self.Filename = os.path.join( self.Config['PATH'], reportname)
Name = self.Filename + '.xls'
# if the file exists, rename new file as format oldname(number)
try:
if os.path.exists ( Name ):
number = 2
# test new name
while 1:                             
Name = self.Filename + "(" + str(number) + ").xls"                        
if os.path.exists ( Name ):
number += 1     
continue
else :
break
self.Filename = self.Filename + "(" + str(number) + ").xls"   
print "Given name has been used, rename new report to %s" % self.Filename
else:
self.Filename += '.xls'
print "Report name: %s" % self.Filename   
self.xBook.SaveAs( self.Filename )
print "Report file was created"
except:
print "Error: creating file failed"

def save(self, newfilename=None):
print "Saving report to %s" % self.Config['PATH']
if newfilename:
self.Filename = newfilename
self.xBook.SaveAs(newfilename)
else:
self.xBook.Save()
print "Report saved"

def close(self):
self.xBook.Close(SaveChanges=0)
# close error msg
del self.xApp
def show(self):
print "Show generated report"
self.xApp.Visible = 1
def delSheet(self, sheet):
sht = self.xBook.Worksheets(sheet)
try:
sht.Delete()
print "sheet %s is deleted" % sheet
except:
print "Error: Delete sheet %s failed" % sheet
def hide(self):
self.xApp.Visible = 0
# get value from cell
def getCell(self,sheet, row, col):
"Get value of one cell"
sht = self.xBook.Worksheets(sheet)
return sht.Cells (row, col).Value

# set value for cell
def setCell(self, sheet,   row, col, value=None, formula=None):
sht = self.xBook.Worksheets(sheet)
if formula :
sht.Cells(row, col).Formula = formula
else:
sht.Cells(row, col).Value = value

# return tuple
def getRange(self, sheet, row1, col1, row2, col2):
"return a 2d array ( i.e. tuple of tuples)"
sht = self.xBook.Worksheets(sheet)
return sht.Range(sht.Cells(row1, col1), sht.Cells(row2, col2)).Value

# set tuple   for range
def setRange(self, sheet, topRow, leftCol, data):
'''
set range data from a tuple
'''      
if type( data ) == types.TupleType:
bottomRow = topRow + len(data) - 1
rightCol = leftCol + len(data[0]) - 1
length = len(data)
else:
bottomRow = topRow
rightCol = leftCol
length = 1
sht = self.xBook.Worksheets(sheet)
if( length > MaxAccept):     
times = length/MaxAccept;
i = 0;   
# Multiple * MaxAccept data
while( i < times ):
sht.Range(
sht.Cells (topRow + i*MaxAccept, leftCol),
sht.Cells(topRow + (i+1)*MaxAccept - 1, rightCol)
).Value = data[i*MaxAccept: (i+1)*MaxAccept]
i += 1
# additional data besides Multiple MaxAccept
sht.Range(
sht.Cells(topRow + times * MaxAccept, leftCol),
sht.Cells(bottomRow, rightCol)
).Value = data[times * MaxAccept:]

else:
sht.Range(
sht.Cells(topRow, leftCol),
sht.Cells(bottomRow, rightCol)
).Value = data

# rename a work sheet
def setSheetName(self, sheet, name):
'''
Rename a sheet
'''
sht = self.xBook.Worksheets(sheet)
#logging   
print "Rename sheet %s to %s" % ( sheet , name )
sht.Name = name

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-371157-1-1.html 上篇帖子: Python 小作业 下篇帖子: 关于python中的浮点数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表