Python对Excel的操作(模块win32com)
前言:
我在编写对加密的xlsm格式的文件进行读数据操作,总结的内容和遇到问题。
使用win32com写入Excel时注意,一定要退出Excel,否则下次运行会出错!
1 import win32com.client as win32 2 import os 3 excel = win32.gencache.EnsureDispatch('Excel.Application') 4 #只接受绝对路径 5 ABSPATH = os.path.abspath(os.path.dirname(__file__)) 6 password = 'password' 7 workbook = excel.Workbooks.Open(os.path.join(ABSPATH,'output_file.xlsx'),False,True,None,Password = password) 8 #获得工作表 9 wb_sheet = workbook.Worksheets(1) 10 #获取sheet的名字 11 sheet_name = workbook.Sheets[1].Name 12 #计算文件中实际有内容的行数 13 num_wb = wb_sheet.UsedRange.Rows.Count 14 #保存工作薄 15 workbook.Save() 16 #退出Excel 17 excel.Application.Quit()
将程序打包时运行出错:
错误:
NameError: name '__file__' is not defined
解决办法:
1 import os.path 2 3 try: 4 ABSPATH = os.path.abspath(os.path.dirname(__file__)) 5 except NameError: # We are the main py2exe script, not a module 6 import sys 7 ABSPATH = os.path.abspath(os.path.dirname(sys.argv[0]))
参考:https://wenku.baidu.com/view/0bf12814102de2bd970588b9.html
https://stackoverflow.com/questions/24140593/python-nameerror-name-file-is-not-defined