精华内容
下载资源
问答
  • 使用python进行excel读取报错的问题   昨天在使用xlrd进行excel文件读取时,出现了如下错误提示:   xlrd.biffh.XLRDError: Excel xlsx file; not supported   经过多次尝试后,发现是xlrd库的...

    前言

    小白初入CSDN,想记录一下在做毕设中遇到的问题和解决方法,方便之后总结,若有相同问题也可进行查阅。


    使用python进行excel读取时报错的问题

     
    昨天在使用xlrd进行excel文件读取时,出现了如下错误提示:
     

    xlrd.biffh.XLRDError: Excel xlsx file; not supported
    

     

    经过多次尝试后,发现是xlrd库的版本问题,我安装的版本是2.0.1,将版本降到1.2.0即可。


    解决方案:

    第一种方法: 直接在pycharm中进行版本降低;
      File --> Settings --> Project --> Python Intrepreter

    没有xldr库就点那个加号,有的话就双击xldr;

    双击进去勾选,然后选1.2.0版本,进行安装。
     
     
    第二种方法:
      先在cmd中输入命令卸载之前的xldr库

    pip3 uninstall xlrd  
    

      然后输入命令进行安装1.2.0

    pip3 install xlrd==1.2.0
    

    我用的是python3


     
    参考博客:https://blog.csdn.net/weixin_45579026/article/details/112601560

    展开全文
  • 下载:依次运行以下两个命令下载框架 pip install xlrd pip install openpyxl 下载成功如图即可

    下载:依次运行以下两个命令下载框架

    pip install xlrd
    
    pip install openpyxl
    

    下载成功如图即可
    在这里插入图片描述

    展开全文
  • #定义list 存入D列 最新净值数据 list_d = [] def getExcel_D(file_url): excel_text = openpyxl.load_workbook(file_url) sh = excel_text['Sheet2'] for cases in list(sh.rows)[1:]: ...
  • 读取文件时报错: xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; found '<?xml' 该xls文件在打开时确实会警告该文件与扩展名格式不一致。用文本编辑器打开该xls文件查看,...
  • 2.Python读取excel数据

    千次阅读 2020-06-18 14:29:24
    2.1.2 xlrd安装2.2 xlrd使用2.2.1 xlrd导入2.2.2 Python操作工作簿2.2.3 Python操作工作表2.2.4 Python读取excel数据2.2.5 Python读取excel数据2.2.6 Python读取excel单元格数据2.2.7 excel合并后的单元格获取...

    2.1 xlrd介绍

    2.1.1 xlrd是什么?

    xlrd是一个用于从Excel文件(无论是.xls还是.xlsx文件)读取数据和格式化信息的库。
    可参考网址:https://xlrd.readthedocs.io/en/latest/index.html

    2.1.2 xlrd安装

    (1) 在安装了python 环境的前提下
    (2) windows+r输入cmd进入终端
    (3)执行pip install xlrd
    如图所示:

    在这里插入图片描述

    2.2 xlrd使用

    2.2.1 xlrd导入

    当我们要调用库中的方法进行操作时。那第一步,就是通过import关键字来导入库。
    代码如下:

    import xlrd
    

    2.2.2 Python操作工作簿

    xlrd.open_workbook(filename) # 获取工作蒲
    • filename–>文件名以及路径,如果路径或者文件名有中文给前面加一个r保留原生字符。
    代码如下:

    `book = xlrd.open_workbook(filename)
    

    2.2.3 Python操作工作表

    book.nsheets # 获取工作表个数,返回值为int
    book.sheet_names() # 获取工作表名,返回值为list
    book.sheets() # 以列表返回工作蒲中的所有工作表
    • 由于book.sheets()获取的是以列表返回工作蒲中的所有工作表,那就可以通过索引来获取单个工作表
    • 代码如下:

    book.sheets()[0]    # 获取第一个工作表
    

    book.sheet_by_index(sheetx) # 通过索引获取工作表
    • sheetx–>工作表索引(索引从0开始)
    • 代码如下:

    book.sheet_by_index(0)  # 获取第一个工作表
    

    book.sheet_by_name(sheet_name) # 通过工作表名获取工作表
    • sheet_name–>工作表名
    book.sheet_loaded(sheet_name_or_index) # 判断是否存在工作表,返回值为布尔
    • sheet_name_or_index–>工作表名或者(or)索引
    • 代码如下:

    book.sheet_loaded(index or sheet_name)  # 作or运算
    

    2.2.4 Python读取excel行数据

    table.nrows # 返回工作表的总行数
    table.row(rowx) # 返回由该行中所有的单元格对象组成的列表
    table.row_slice(rowx, start_colx=0, end_colx=None) # 返回由该行中开始列到结束列的单元格对象组成的列表
    • rowx–>指定行(默认从0开始)
    • start_colx–>开始列
    • end_colx–>结束列
    table.row_types(rowx, start_colx=0, end_colx=None) # 返回该行切片后列表中每单元格的数据类型
    • rowx–>指定行(默认从0开始)
    • start_colx–>开始列
    • end_colx–>结束列

    注意
    excel中数据类型对照:

    ctype
    0empty(空值)
    1string(字符串)
    2number(数字)
    3date(日期)
    4boolean(布尔)
    5error(错误)

    table.row_values(rowx, start_colx=0, end_colx=None) # 返回该行切片后列表中每单元格的值
    table.row_len(rowx) # 返回该行有效单元格
    示例1-1:
    导入xlrd库

    import xlrd as xr
    

    读取数据文件weather_expectation.xlsx,并传入一个变量book中:

    book = xr.open_workbook('weather_expectation.xlsx')
    

    查询该变量book:

    <xlrd.book.Book at 0x8522780>
    

    打开原文件,文件里有两个工作簿,我们需要的工作簿在第二个工作簿中,因此索引值取1。
    在这里插入图片描述
    随后根据索引获取第一个工作表,将对象传入参数sheet_two中:

    sheet_two = book.sheet_by_index(1)
    

    查询变量sheet_two得:

    <xlrd.sheet.Sheet at 0x87283c8>
    

    说明已经获取到变量sheet了,因此我们可以继续后面的工作,我们通过nrows属性获取一下工作表的有效总行数:

    sheet_two.nrows  # 获取工作表的有效总行数
    

    输出结果为

    7626
    

    打开原文件,发现该工作表也有7626行
    在这里插入图片描述
    我们查询一下第七行的数据

    sheet_two.row(6) # 获取第几行,注意:索引从0开始
    

    注意,索引是从0开始,因此索引值为6,输出结果为:

    [text:'62823',
     text:'20150710160000',
     text:'受“莲花”残余云系影响,昨天夜间到今天早晨,我市东部地区出现暴雨,最大降雨为坪西站76.1毫米,其余地区小到中雨;沿海和高地阵风8-9级,全市最大阵风出现在大梧桐,26.9米/秒;白天风雨减弱,多云间晴天,局部有阵雨;相对湿度85%-92%;气温24.6℃-33.1℃;截至下午16时,深圳市国家基本气象站记录到11.9毫米降水。',
     text:'多云,天气炎热,午后局部有阵雨;气温27-33℃;西到西北风2-3级;相对湿度60%-85% ',
     text:'预计未来一周我市以多云天气为主,天气炎热,部分时间有阵雨或雷阵雨',
     text:'20150710154100',
     text:'12.png',
     text:'27',
     text:'33',
     text:'0.0',
     text:'2',
     text:'西',
     text:'60.0',
     text:'85.0',
     text:'-',
     text:'-',
     text:'-',
     text:'27',
     text:'33',
     text:'02_2.png',
     text:'-',
     text:'1',
     text:'1',
     text:'1',
     text:'287894',
     text:'20150711035856',
     text:'-',
     text:'-',
     text:'-']
    

    查看源数据为结果为:

    在这里插入图片描述
    跟上面的数据吻合。
    因此我们可以读取第七行里从第六列开始的数据,通过切片的方式进行读取。

    sheet_two.row(6)[6:]
    

    获取索引为6行,索引为6列后的数据的类型

    sheet_two.row_types(6,6)  # 获取索引为6行 索引为6列后的数据的类型
    

    输出结果为:

    array('B', [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
    

    查表可知,数据类型均为字符串。
    通过row_values()查询第六行每个单元格的值:

    sheet_two.row_values(6)
    

    输出结果为:

    ['62823',
     '20150710160000',
     '受“莲花”残余云系影响,昨天夜间到今天早晨,我市东部地区出现暴雨,最大降雨为坪西站76.1毫米,其余地区小到中雨;沿海和高地阵风8-9级,全市最大阵风出现在大梧桐,26.9米/秒;白天风雨减弱,多云间晴天,局部有阵雨;相对湿度85%-92%;气温24.6℃-33.1℃;截至下午16时,深圳市国家基本气象站记录到11.9毫米降水。',
     '多云,天气炎热,午后局部有阵雨;气温27-33℃;西到西北风2-3级;相对湿度60%-85% ',
     '预计未来一周我市以多云天气为主,天气炎热,部分时间有阵雨或雷阵雨',
     '20150710154100',
     '12.png',
     '27',
     '33',
     '0.0',
     '2',
     '西',
     '60.0',
     '85.0',
     '-',
     '-',
     '-',
     '27',
     '33',
     '02_2.png',
     '-',
     '1',
     '1',
     '1',
     '287894',
     '20150711035856',
     '-',
     '-',
     '-']
    

    查询第七行的数据长度:

    sheet_two.row_len(6)
    

    查询结果为:

    29
    

    原数据也有29列,跟源数据吻合。

    2.2.5 Python读取excel列数据

    table.ncols # 返回工作表的总列数
    table.col(colx, start_rowx=0, end_rowx=None) # 返回由该列中所有的单元格对象组成的列表
    table.col_slice(colx, start_rowx=0, end_rowx=None) # 返回由该列中开始行到结束行的单元格对象组成的列表
    table.col_types(colx, start_rowx=0, end_rowx=None) # 返回该行切片后列表中每单元格的数据类型
    table.col_values(colx, start_rowx=0, end_rowx=None) # 返回该行切片后列表中每单元格的值
    示例1-2:
    在示例1-1的基础上,我们查询该数据的有效列数:

    sheet_two.ncols  # 获取该工作表有效列数
    

    输出结果为:

    29
    

    跟原数据吻合。
    后通过col()方法读取表格索引为2的列的0-9行

    sheet_two.col(2,0,10) # 获取该表格索引为2列 的0-9行
    

    col()方法的第一个参数为列数索引,第二个参数为起始行,第三个参数为结束行。我们也可以通过切片的方式去读取数据:

    sheet_two.col(2)[0:10]
    

    查询结果为:

    [text:'WEATHERBACK',
     text:'昨天夜间到今天早晨,我市多云转阴天;早晨大部分地区最低气温26℃左右,吹和缓到清劲的偏北风,沿海和高地阵风6-7级;相对湿度55%-70%;全市大部分地区能见度在10-20公里之间。截至到早晨5时,深圳市国家基本气象站未记录到降水。我台已于9日8时30分将全市台风白色预警升级为蓝色。',
     text:'昨天夜间到今天上午,我市阴天,有分散小雨;气温25-28℃,吹和缓到清劲的偏北风,沿海和高地阵风6-7级;相对湿度57%-68%;全市大部分地区能见度在10-20公里之间。截至到上午10时,深圳市国家基本气象站未记录到降水。我台已于9日14时30分在盐田区、大鹏新区、和东、西海区将台风蓝色预警升级为黄色预警',
     text:'“莲花”已减弱为热带低压且远离我市,受台风及其外围环流影响,昨天夜间到今天早晨,我市东部地区出现暴雨,最大降雨为坪西站75.2毫米,其余地区小到中雨;沿海和高地阵风8-9级,全市最大阵风出现在大梧桐,26.9米/秒;相对湿度85%-92%;截至早晨5时,深圳市国家基本气象站记录到9.2毫米降水。',
     text:'昨天夜间到今天下午,我市阴天,有分散小雨;气温25.8-30.5℃,吹清劲的偏北风,沿海和高地阵风7-8级,全市最大阵风出现在小梅沙,20.7米/秒;相对湿度57%-68%;全市大部分地区能见度在15-20公里之间。截至到下午16时,深圳市国家基本气象站记录到微量降水。盐田区、大鹏新区和东、西部海区的台风黄色预警生效中',
     text:'受“莲花”残余云系影响,昨天夜间到今天上午,我市东部地区出现暴雨,最大降雨为坪西站76.1毫米,其余地区小到中雨;沿海和高地阵风8-9级,全市最大阵风出现在大梧桐,26.9米/秒;相对湿度85%-92%;气温24.6℃-28.1℃;截至上午10时,深圳市国家基本气象站记录到11.9毫米降水。',
     text:'受“莲花”残余云系影响,昨天夜间到今天早晨,我市东部地区出现暴雨,最大降雨为坪西站76.1毫米,其余地区小到中雨;沿海和高地阵风8-9级,全市最大阵风出现在大梧桐,26.9米/秒;白天风雨减弱,多云间晴天,局部有阵雨;相对湿度85%-92%;气温24.6℃-33.1℃;截至下午16时,深圳市国家基本气象站记录到11.9毫米降水。',
     text:'昨天夜间到今天早晨,我市多云,有轻微灰霾;早晨全市的最低气温普遍在27℃-29℃之间;吹微弱的西北风;相对湿度53%-97%;全市能见度较低,中西部地区在2-5公里之间,东部略高在6-10公里之间;截至早晨05时,深圳市国家基本气象站未记录到降水。',
     text:'昨天夜间到今天早晨,我市多云;早晨全市的最低气温普遍在27℃-29℃之间;吹和缓的偏西风;相对湿度80%-95%;西部地区能见度较好,基本在10公里以上,东部地区能见度稍差。截至早晨05时,深圳市国家基本气象站未记录到降水。',
     text:'昨天夜间到今天上午,我市多云间晴天;早晨最低气温26.8℃;吹和缓的偏西到西北风;西部地区出现轻微灰霾。截至上午10时,深圳市国家基本气象站记录到0.1毫米的降水。']
    

    我们也可以通过col_slice()方法去实现:

    sheet_two.col_slice(2,0,10)
    

    col.slice()方法里面,第一个参数是列索引,第二个参数是起始行,第三个参数是结束行。

    2.2.6 Python读取excel单元格数据

    table.cell(rowx, colx) # 返回当前行列单元格内容
    table.cell_value(rowx, colx) # 返回当前行列单元格的数值
    table.cell_type(rowx, colx) # 返回当前行列单元格的类型
    示例1-3:
    导入xlrd库

    import xlrd as xr
    

    读取数据文件weather_expectation.xlsx,并传入一个变量book中:

    book = xr.open_workbook('weather_expectation.xlsx')
    

    获取名字为数据集1的工作簿,将对象传入变量sheet_two中:

    sheet_two = book.sheet_by_name('数据集1')
    

    将sheet_two输出后得:

    <xlrd.sheet.Sheet at 0x8f68278>
    

    后我们获取单元格第七行第七列的内容:

    sheet_two.cell(6,6)
    

    输出结果为:

    text:'12.png'
    

    我们通过cell_value()方法去获取单元格数值

    sheet_two.cell_value(6,6)  # 获取单元格数值
    

    输出结果为:

    '12.png'
    

    同样,我们可以通过cell()方法调用.value属性去实现

    sheet_two.cell(6,6).value
    

    我们可以通过.cell_type() 去实现获取单元格数据类型:

    sheet_two.cell_type(6,6)  # 获取单元格类型
    

    我们也可以通过ctype属性去查看单元格的数据类型

    sheet_two.cell(6,6).ctype # 注意仅用type不行 是ctype
    

    注意,不能使用type属性,会报错。

    2.2.7 excel合并后的单元格获取

    table.merged_cells # 返回所有合并后的单元格的索引
    • 注意:(开始行数,结束行数,开始列数,结束列数)
    table.cell_value(rowx, colx) # 通过开始行,开始列获取合并后单元格
    示例1-4:
    导入xlrd库

    import xlrd as xr
    

    读取数据文件考场安排.xlsx,并传入一个变量book中:

    book = xr.open_workbook('考场安排.xlsx')
    

    我们将变量book输出得:

    <xlrd.book.Book at 0x8525cf8>
    

    我们打开数据文件考场安排.xlsx,看到原文件里的内容:
    在这里插入图片描述
    我们通过名字读取工作簿,并将其传入变量sheet1中:

    shee1 = book.sheet_by_name('Sheet1')
    

    我们将对象输出后得:

    <xlrd.sheet.Sheet at 0x86f2908>
    

    说明我们能获取的到工作簿,我们可以继续获取合并单元格索引。

    # 获取合并单元格的索引(开始行,结束行,开始列,结束列)。结束行与结束列取不到。
    sheet1.merged_cells
    

    注意:获取合并单元格的索引(开始行,结束行,开始列,结束列)。结束行与结束列取不到。
    我们获取一个合并后的单元格:

    # 获取合并后单元格:开始行,开始列
    sheet1.cell_value(2,0)
    

    输出为:

    49389.0
    

    我们获取该单元格的值:

    sheet1.cell(2,0).value
    

    输出结果为:

    49389.0
    

    我们在查询其数据类型:

    sheet1.cell(2,0).ctype
    

    输出结果为:

    3
    

    查表可知3对应的类型为日期,与原数据吻合。

    2.3 示例

    读取class_info.xls数据,并以如下格式返回。

    [{'姓名': '张三', '年龄': 22, '语言': 'Python', '考试时间': '20200317 00:00:00'}, {'姓名': '李四', '年龄': 21, '语言': 'Python', '考试时间': '20200318 00:00:00'}, {'姓名': '王五', '年龄': 20, '语言': 'Python', '考试时间': '20200317 00:00:00'}, {'姓名': '刘六', '年龄': 18, '语言': 'Python', '考试时间': '20200318 00:00:00'}]
    

    在这里插入图片描述

    我们先导入xlrd库:

    import xlrd as xr
    

    我们获取我们的工作簿:

    book = xr.open_workbook('class_info.xls')
    

    获取相应的工作表:

    table = book.sheet_by_index(0)
    

    获取单元格数据:因为我们所需的数据所在的行行数从索引为1到3,列数为从0到3。
    我们获取行列的数量:

    row_num = table.norws
    col_num = table.ncols
    

    我们输出行数:

    for i in range(0,row_num):
        print(i)
    

    输出结果为

    0
    1
    2
    3
    4
    

    因为我们暂时不需要表头的数据,因此我们把0变成1。我们再去遍历列索引:

    for i in range(0,row_num):
        for j in range(col_num):
            print((i,j))
    

    我们以元组的形式将单元格的行列索引输出,得到:

    (1, 0)
    (1, 1)
    (1, 2)
    (1, 3)
    (2, 0)
    (2, 1)
    (2, 2)
    (2, 3)
    (3, 0)
    (3, 1)
    (3, 2)
    (3, 3)
    (4, 0)
    (4, 1)
    (4, 2)
    (4, 3)
    

    我们去读取每个单元格的值:

    for i in range(1,row_num):
        for j in range(col_num):
            c_value = table.cell(i,j).value
            print(c_value)
    

    输出得:

    张三
    22.0
    Python
    43907.0
    李四
    21.0
    Python
    43908.0
    王五
    20.0
    Python
    43907.0
    刘六
    18.0
    Python
    43908.0
    

    我们发现年龄这栏的数值为浮点数以及考试时间格式不为日期,因此我们需要继续处理这些数据。
    我们查询这些单元格的值和数据类型:

    for i in range(1,row_num):
        for j in range(col_num):
            c_value = table.cell(i,j).value
            #print(c_value)
            c_type = table.cell_type(i,j)
            print(c_value,c_type)
    

    输出得:

    
    张三 1
    22.0 2
    Python 1
    43907.0 3
    李四 1
    21.0 2
    Python 1
    43908.0 3
    王五 1
    20.0 2
    Python 1
    43907.0 3
    刘六 1
    18.0 2
    Python 1
    43908.0 3
    

    查上表可知,1为字符串,2为数字,3为日期。我们将年龄的数据转换为整形,我们通过int()方法对数据进行转型,但因为如果原生数据是小数的话我们这么做会破坏原有的数据,因此我们再加一个判断条件,判断该数据是否为整数。代码如下:

    for i in range(1,row_num):
        for j in range(col_num):
            c_value = table.cell(i,j).value
            #print(c_value)
            c_type = table.cell_type(i,j)
            #print(c_value,c_type)
            if c_type == 2 and c_value%1 == 0:
                c_value = int(c_value)
                print(c_value)
    

    输出结果为:

    22
    21
    20
    18
    

    我们通过将时间数据转化为元组的方法取出时间数据:

    for i in range(1,row_num):
        for j in range(col_num):
            c_value = table.cell(i,j).value
            #print(c_value)
            c_type = table.cell_type(i,j)
            #print(c_value,c_type)
            if c_type == 2 and c_value%1 == 0:
                c_value = int(c_value)
                #print(c_value)
            elif c_type == 3:
                res = xr.xldate_as_tuple(c_value,0)
                print(res)
    

    输出结果为:

    (2020, 3, 17, 0, 0, 0)
    (2020, 3, 18, 0, 0, 0)
    (2020, 3, 17, 0, 0, 0)
    (2020, 3, 18, 0, 0, 0)
    

    我们通过导入datetime库中的datetime方法,先把元组拆包,在把数据转换为时间格式:

    for i in range(1,row_num):
        for j in range(col_num):
            c_value = table.cell(i,j).value
            #print(c_value)
            c_type = table.cell_type(i,j)
            #print(c_value,c_type)
            if c_type == 2 and c_value%1 == 0:
                c_value = int(c_value)
                #print(c_value)
            elif c_type == 3:
                year,month,day,hour,minute,second = xr.xldate_as_tuple(c_value,0)
                c_value = datetime.datetime(year,month,day,hour,minute,second)
                print(c_value)
    

    输出为:

    2020-03-17 00:00:00
    2020-03-18 00:00:00
    2020-03-17 00:00:00
    2020-03-18 00:00:00
    

    我们最后要以key-value的方式进行输出,因此我们先获取键值:

    keys = table.row_values(0)
    

    输出结果为:

    ['姓名', '年龄', '语言', '考试时间']
    

    我们先建立一个空字典table_data,后把数据加入该字典中。我们利用先前遍历的列索引,将每列的键加入对应的值。

    for i in range(1,row_num):
        table_data = {}
        for j in range(col_num):
            c_value = table.cell(i,j).value
            #print(c_value)
            c_type = table.cell_type(i,j)
            #print(c_value,c_type)
            if c_type == 2 and c_value%1 == 0:
                c_value = int(c_value)
                #print(c_value)
            elif c_type == 3:
                year,month,day,hour,minute,second = xr.xldate_as_tuple(c_value,0)
                c_value = datetime.datetime(year,month,day,hour,minute,second)
            table_data[keys[j]] = c_value
        print(table_data)
    

    输出结果为:

    {'姓名': '张三', '年龄': 22, '语言': 'Python', '考试时间': datetime.datetime(2020, 3, 17, 0, 0)}
    {'姓名': '李四', '年龄': 21, '语言': 'Python', '考试时间': datetime.datetime(2020, 3, 18, 0, 0)}
    {'姓名': '王五', '年龄': 20, '语言': 'Python', '考试时间': datetime.datetime(2020, 3, 17, 0, 0)}
    {'姓名': '刘六', '年龄': 18, '语言': 'Python', '考试时间': datetime.datetime(2020, 3, 18, 0, 0)}
    

    我们发现时间数据还没被格式化,因此我们将时间序列进行格式化:

    for i in range(1,row_num):
        table_data = {}
        for j in range(col_num):
            c_value = table.cell(i,j).value
            #print(c_value)
            c_type = table.cell_type(i,j)
            #print(c_value,c_type)
            if c_type == 2 and c_value%1 == 0:
                c_value = int(c_value)
                #print(c_value)
            elif c_type == 3:
                year,month,day,hour,minute,second = xr.xldate_as_tuple(c_value,0)
                date = datetime.datetime(year,month,day,hour,minute,second)
                c_value = date.strftime('%Y%m%d %H:%M:%S')
            table_data[keys[j]] = c_value
        print(table_data)
    

    输出得到:

    {'姓名': '张三', '年龄': 22, '语言': 'Python', '考试时间': '20200317 00:00:00'}
    {'姓名': '李四', '年龄': 21, '语言': 'Python', '考试时间': '20200318 00:00:00'}
    {'姓名': '王五', '年龄': 20, '语言': 'Python', '考试时间': '20200317 00:00:00'}
    {'姓名': '刘六', '年龄': 18, '语言': 'Python', '考试时间': '20200318 00:00:00'}
    

    最后,我们将这几个字典写入一个新的列表中,我们先定义一个空列表class_info_data,后我们将这些字典用append()方法加入。
    代码如下:

    class_info_data = []
    for i in range(1,row_num):
        table_data = {}
        for j in range(col_num):
            c_value = table.cell(i,j).value
            #print(c_value)
            c_type = table.cell_type(i,j)
            #print(c_value,c_type)
            if c_type == 2 and c_value%1 == 0:
                c_value = int(c_value)
                #print(c_value)
            elif c_type == 3:
                year,month,day,hour,minute,second = xr.xldate_as_tuple(c_value,0)
                date = datetime.datetime(year,month,day,hour,minute,second)
                c_value = date.strftime('%Y%m%d %H:%M:%S')
            table_data[keys[j]] = c_value
        class_info_data.append(table_data)
    print(class_info_data)
    

    输出结果为:

    [{'姓名': '张三', '年龄': 22, '语言': 'Python', '考试时间': '20200317 00:00:00'}, {'姓名': '李四', '年龄': 21, '语言': 'Python', '考试时间': '20200318 00:00:00'}, {'姓名': '王五', '年龄': 20, '语言': 'Python', '考试时间': '20200317 00:00:00'}, {'姓名': '刘六', '年龄': 18, '语言': 'Python', '考试时间': '20200318 00:00:00'}]
    

    我们完成了这个示例所要实现的代码。

    展开全文
  • 今天使用pandas读取一个文件时,居然报错了 正常的读取,没有多余操作,而且把文件发送给别人读取,一点问题没有 经过多次测试复现,最终发现原因是,这个excel表的表头是我从另一个表中复制过来了,可能有...

    今天使用pandas读取一个文件时,居然报错了

     

    正常的读取,没有多余操作,而且把文件发送给别人读取,一点问题没有

    经过多次测试复现,最终发现原因是,这个excel表的表头是我从另一个表中复制过来了,可能有什么无法识别的格式,

    但是这个异常也太诡异了

    至于为什么发送给别人读取正常,我猜测是经过网络,程序的独写之后,哪些异常格式过滤掉了吧

    欢迎大佬留言解惑 

    展开全文
  • 最后找到原因是因为我所读取的文件虽然是以.xls命名,实际并不是excel表格,验证方法有两种: 方法一:新建txt文件,打开该txt,将原想读取的xls文件拖进文本编辑器中,出现如下: 而excel表格应则不同...
  • python 读取xlsx文件报错报错信息如下: 为什么会报错?那是因为xlrd 2.0.1 仅支持 .xls 文件。 二、解决方法: 1、确认自己安装的xlrd版本: 可以先用以下命令看看自己安装的xlrd是什么版本: pip show xlrd ...
  • import requests import xlrd import time ...def read_excel(): workbook = xlrd.open_workbook('C:\\Users\\99063\\Desktop\\python参数化.xlsx') table = workbook.sheet_by_name(u'Sheet1').
  • 最近在工作中遇到这样一个问题:需要往物联网平台里面添加应用数据,格式如下: 因为要添加一百多个,所以总不能手工敲吧,效率极低。所以就想到了用execl组织下,代码一跑就完事了。 二、用到的模块和方法 ...
  • 是因为安装的xlrd版本异常导致。 原因:xlrd更新到了2.0.1版本,只支持.xls文件,不支持.xlsx。 解决方法:降级安装xlrd D:\Python\Python37\Scripts>pip uninstall xlrd ... d:\python\python37\lib\s
  • python读取excel文件遇到的问题

    万次阅读 2016-12-09 16:41:33
    1、mac安装xlrd模块,如果cmd下执行pip install xlrd安装不成功,可以直接去官网下载,名称类似这样的文件xlrd-1.0.0-py3-none-any.whl,切换到已下载的文件路径在cmd下执行pip3 install xlrd-1.0.0-...2、python打开e
  • Python使用pandas读取excel表格数据

    万次阅读 多人点赞 2019-04-08 16:14:04
    导入 import pandas as pd ...读取表格并得到表格行列信息 df=pd.read_excel('test.xlsx') height,width = df.shape print(height,width,type(df)) 表格如下: 得到如下输出,为一个4行5列的数据块: ...
  • 版权声明:未经本人允许请勿转载 ... 文章目录 一、业务场景 二、用到的包 1.xlrd 主要方法: ... 三、Excel数据格式化思路 1.数据结构选择 2.数据存储 3.多个文件的情况 4....
  • 准备写一个脚本将文件夹下的所有表格文件内容都读取到一个列表中,但是遇到了标题的错误,经查证是wps中打开了其中一个表格,将其关闭即可顺利运行。 import os import openpyxl inputdir='./VOCdevkit2007/results/...
  • 问题描述 使用pandas库的read_excel()方法读取外部excel文件报错, 截图如下 好像是缺少了什么方法的样子 问题分析 分析个啥, 水平有限, 直接...pandas库读取excel文件是需要安装xlrd模块的, 也就是它默认是引擎engi
  • 今天玩python读取excel文件报错了,报错如下: 用我蹩脚的英语大致猜到:应该是下载的xlrd的包版本出问题了 所以 我百度一番,终于解决!!! 找到xlrd所在的文件夹,卸载:pip uninstall xlrd 当卸载成功,标志...
  • 主要介绍了Python xlrd读取excel日期类型的2种方法,本文同时讲解了xlrd读取excel某个单元格的方法,需要的朋友可以参考下
  • Python读取Excel文件数据的2种方式 1、利用xlrd库函数 import xlrd #读取excel文件 def excel(fileName,sheetName): wb = xlrd.open_workbook(fileName)# 打开Excel文件 sheet = wb.sheet_by_name(sheetName)#...
  • 经过一段时间折腾linux和python环境安装,开始初次学习python 代码如下: 报错如下: 代码与原代码完全一致,暂时没有找到原因
  • 无奈报错不支持这个文件:Excel xlsx file; not supported 报错原因: xlrd版本与python语法环境不匹配 操作: 降低xlrd版本适应python环境 现象:报错前的xlrd版本为2.0.1 降低版本为1.2.0 具体查看下图的指令操作
  • 如何将一个python中的参数写入excel中?网页链接pip install xlwt xlwt写入except模块# 如果没载xlwt模块需要先在cmd的pip进行下载qm = input()book = open_workbook("file.xls", "w b")# 打开...
  • 主要介绍了Python使用Pandas读写Excel实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 终端输入就可 pip install pyexcel-xls
  • 代码 import pandas as pd ...df_keliu = pd.read_excel(file_keliu,sheet_name="Loc_Map") print(df_keliu) 报错信息 OSError: [Errno 22] Invalid argument: '\u202aC:/Users/Desktop/test.xl.
  • 当某行的列最多的时候,再获取其下一列就会报错 其他行不是列最多的时候,在获取其下一列就不会报错 原因:excel开辟内存空间是 按照矩形的区域,长是最长的列,高是最多的行。即使用户没有输入某些单元格,但是...
  • 使用python语言实现Excel 表格中的数据读取,需要用到xlrd.py模块,实现程序如下:import xlrd #导入xlrd模块class ExcelData():def __init__(self,data_path,sheetname):self.data_path = da...
  • Python 读取csv报错编码问题解决办法

    千次阅读 2019-09-14 16:07:26
    1、保存报错信息:‘utf-8’ codec can’t decode byte 0xbb in position 2: invalid start byte 2、解决办法:首先把csv文件以记事本的格式打开,默认保存是ANSI编码,我们应该手动修改成utf-8 ===>(如果记事本...
  • Excel导入经纬度数据Excel文件的第一列是经度,第二列是纬度。 Excel文件链接:https://pan.baidu.com/s/1HmkDyxpU-WoO4A7KGPenYQ 提取码:kr0n from math import radians, cos, sin, asin, sqrt import xlrd ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,903
精华内容 2,361
关键字:

python读取excel数据报错

python 订阅