【已解决】Python中使用xlutils的copy出错:AttributeError: ‘str’ object has no attribute ‘datemode’

【问题】

在折腾:

【已解决】Python中使用xlutils.copy出错:AttributeError: ‘module’ object has no attribute ‘copy’

的过程中,参考:

writing to existing workbook using xlwt

去用:

from xlutils.copy import copy;

newWb = copy(gConst['xls']['fileName']);

代码,结果出错:

    newWb = copy(gConst[‘xls’][‘fileName’]);

  File "D:\tmp\dev_install_root\Python27_x64\lib\site-packages\xlutils-1.5.2-py2.7.egg\xlutils\copy.py", line 13, in copy

    w

  File "D:\tmp\dev_install_root\Python27_x64\lib\site-packages\xlutils-1.5.2-py2.7.egg\xlutils\filter.py", line 827, in process

    reader(chain[0])

  File "D:\tmp\dev_install_root\Python27_x64\lib\site-packages\xlutils-1.5.2-py2.7.egg\xlutils\filter.py", line 60, in __call__

    filter.workbook(workbook,filename)

  File "D:\tmp\dev_install_root\Python27_x64\lib\site-packages\xlutils-1.5.2-py2.7.egg\xlutils\filter.py", line 267, in workbook

    self.wtbook.dates_1904 = rdbook.datemode

AttributeError: ‘str’ object has no attribute ‘datemode’

【解决过程】

1.但是,参考的帖子里面,就是这么写的啊,不知道为何错误。

2.后来参考官网的资料:

xlutils copy

才知道,copy的参数,是对应的workbook,而不是xls的filename。

3.所以去改为:

import xlwt;
import xlrd;
#import xlutils;
from xlutils.copy import copy;

oldWb = xlrd.open_workbook(gConst['xls']['fileName']);
print oldWb; #<xlrd.book.Book object at 0x000000000315C940>
newWb = copy(oldWb);
print newWb; #<xlwt.Workbook.Workbook object at 0x000000000315F470>

才真正可以正常打开旧的xls,拷贝出一份新的xls。

 

【总结】

看来,别人的代码,也不是很靠谱。

还是要自己实践才能出真知。



发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量