最近接的项目结果输出excel对格式要求特别高,所以懒得找了,直接用win32操作了。
Python操作Excel的库有不少,但是各有优缺点,没有完美的,这里其他的几个库都不多说了,仅仅列下win32的一些学习记录。
直接上代码:
def win32Read(filepath, passWords):
#===========================================================================
# win32实现Excel文件读取
# Just An Example, Do Not Use It.
#===========================================================================
rst = {}
try:
pythoncom.CoInitialize ()
xlsApp = win32com.client.DispatchEx('Excel.Application')
#禁用事件
xlsApp.EnableEvents = False
#禁止弹窗
xlsApp.DisplayAlerts = False
#注: 当使用密码时,前边的几个参数都必须存在
wb = xlsApp.Workbooks.Open(filepath,UpdateLinks=3,ReadOnly=False,Format = None, Password=passWords)
# 屏蔽弹窗
wb.Checkcompatibility = False
#1:打开宏,2:禁用宏
wb.RunAutoMacros(2)
for sheetObj in wb.Worksheets:
datatupe = sheetObj.UsedRange.Value
if not datatupe:
continue
else:
datatupe = [list(linedata) for linedata in datatupe]
rst[sheetObj.name] = datatupe
return rst
except Exception,e:
print unicode(e)
# 具体处理看情况
finally:
try:
xlsApp.DisplayAlerts = False
wb.Close(SaveChange = False)
xlsApp.DisplayAlerts = True
except:
pass
try:
xlsApp.Application.Quit()
del xlsApp
except:
pass
pythoncom.CoUninitialize ()
这个函数主要用来读取excel并输出字典,对合并单元格的部分没有处理,这里仅仅对套路的部分做个记录,实际上并不实用,后续记录更多的操作。