2009-10-23
win32com用来转换Excel文件 - [Python]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://johnsonqu.blogbus.com/logs/48978125.html
首先,我要承认的是,昨天做得事情其实停无聊的,是为了生成甘特图来着...,准确地说是利用Excel来维护一个FUNCTION GROUP的所有项目的信息(任务,启动/完成时间,完成状态等等),因为不是所有的人都有MS Project的license,然后,再导入到Project里面生成甘特图。
要实现这个功能,当然还是用我熟悉的Python,再加上win32com的库(要操作office,非它莫属)。做法很简单,就是把Excel的xls文件中间的一个worksheet,转换成cvs文件,然后,再利用正则解析出需要的信息,生成一个新的符合Project导入需求的cvs,然后,再利用win32com生成xls文件。最后一步,Project打开xls文件没有在脚本里面作,有个import wizard要处理,比较复杂,还是放放吧。
昨天碰到的主要的问题,是SaveAs的时候,指定FileFormat,Google上查到的24/6等数字,不能用,:(。在我就要放弃的时候,还是Google救了我,提示去看看testMSOffice.py($PYTHON_SITE_PACKAGES\win32com\test路径下),需要用以下语句来SaveAs就好了:
mod = gencache.EnsureModule("{00020813-0000-0000-C000-000000000046}", 0, 1, 2, bForDemand=1)
workbook.SaveAs(os.path.join(folder_name, to_import_xls_file), FileFormat = mod.constants.xlNormal)
写到这里,我忍不住还是要骂娘,没有上面的EnsureModule操作,constants是那不到内容的...,什么API的设计阿?
随机文章:
收藏到:Del.icio.us







