最新消息:20210917 已从crifan.com换到crifan.org

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

Python crifan 12180浏览 0评论

【问题】

在折腾:

【已解决】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。

 

【总结】

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

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

转载请注明:在路上 » 【已解决】Python中使用xlutils的copy出错:AttributeError: ‘str’ object has no attribute ‘datemode’

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
99 queries in 0.190 seconds, using 23.34MB memory