m0_57218953
2021-04-14 11:14
采纳率: 100%
浏览 94

同样一段代码,IDLE可以运行,Pycharm不可以,这是为什么?

import xlrd
dir_case_0='G:\\Users\\Gordon\\Desktop\\图纸.xlsm'
def get_data(dir_case_0, 图纸):
    #如果路径下xlsx文件很多,可以把文件名做一个拼接传入文件名这个参数
    # dir_case = 'F:\\code\\csdn\\cese_excel\\' + filename + '.xlsx'
    '''  
获取其中一张sheet
table = data.sheet_by_name(data.sheet_names()[0])
sheet的行数与列数
table.nrows, table.ncols
    '''
    data = xlrd.open_workbook(dir_case_0)
    table = data.sheets()[0]
    nor = table.nrows
    nol = table.ncols
    dict = {}
    for i in range(1, nor):
        for j in range(nol):
            title = table.cell_value(0, j)
            value = table.cell_value(i, j)
            # print value
            dict[title] = value
        yield dict  
'''        
• yield 是一个类似 return 的关键字,只是这个函数返回的是个生成器
• 当你调用这个函数的时候,函数内部的代码并不立马执行 ,这个函数只是返回一个生成器对象
• 当你使用for进行迭代的时候,函数中的代码才会执行
'''
if __name__ == '__main__':
    for i in get_data(r'G:\Users\Gordon\Desktop\图纸.xlsm','图纸'):
        print (i)

结果如下: 

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • 已采纳

    应该是解析Excel包不一样把,不支持xlsx格式的文件。

    已采纳该答案
    打赏 评论
  • m0_57218953 2021-04-14 11:26

    找到答案了,xlrd版本2.0.1不支持xlsx,安装1.2.0版本的就可以了

    打赏 评论
  • 有问必答小助手 2021-04-14 17:01

    您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    打赏 评论
  • 有问必答小助手 2021-04-15 17:07

    非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

    速戳参与调研>>>https://t.csdnimg.cn/Kf0y

    打赏 评论

相关推荐 更多相似问题