精华内容
下载资源
问答
  • 主要介绍了Python读取Excel数据并生成图表过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 本文使用xlrd读取excel文件(xls,sxls格式),使用xlwt向excel写入数据 一、xlrd和xlwt的安装 安装很简单,windos+r调出运行窗口,输入cmd,进入命令行窗口,输入以下命令。 安装xlrd: pip install xlrd 安装xlwt: ...
  • excel里的日期型数据,用python读取出来是这样的: 坐标轴的显示肯定也是有问题的。 该方法就是修改excel数据类型。将日期类型数据修改为文本类型,一定要在数据前面加单引号,这样读取出来的数据
  • 用于快速生成sql语句,适用于测试人员批量生成合理测试数据
  • 今天小编就为大家分享一篇Python读取Excel表格,并同时画折线图和柱状图的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 利用python进行数据预处理,主要应用于学术研究中少量数据的处理。包括读取excel中的数据,将字符型的分类属性用整数表示
  • 前几天,我姐遇见了一个难题:需要从excel表格中不断复制数据到word模板中,相当繁琐,询问我有没有解决的办法。于是我百度了一下,借鉴了相关博主的博文,结合自己的需求,最终解决了该问题。特在此记录一下。 问题...

    Python 读取excel及批量生成word模板

    问题-来源

    前几天,我姐遇见了一个难题:需要从excel表格中不断复制数据到word模板中,相当繁琐,询问我有没有解决的办法。于是我百度了一下,借鉴了相关博主的博文,结合自己的需求,最终解决了该问题。特在此记录一下。

    问题-困难

    问题1:一直无法导入docxptl库,一直尝试仍无法解决。直到第二天,下定决心下载最新版本的python,该问题解决。
    问题2:读取excel的xlrd一直读取不了我的数据源,多次百度最终寻得解决办法:因为我的表格是以xlsx结尾的,1.2.0之后的xlrd库版本只能读取xls结尾的表格,所以,我在pycharm中下载的xlrd库版本为1.2.0,该问题解决。

    问题-代码解决

    word模板需要用{{}}进行占位,具体 如下图所示:
    在这里插入图片描述

    以下是源码:

    # coding:<encoding name> : # coding: utf-8
    import xlrd
    from docxtpl import DocxTemplate
    
    
    def main():
        data = xlrd.open_workbook(r'C:\Users\22815\Desktop\打印\数据表.xlsx')
        for x in range(0, 1):#这儿可以循环多张表
            print(x)
            table = data.sheets()[x]
            names = data.sheet_names()[x]  # 获取表名
            nrows = table.nrows
            print(names)
    
            for i in range(nrows):
                name = table.row_values(i)[0]  # 姓名
                idCard = table.row_values(i)[3]  # 身份证
                smallMoney = table.row_values(i)[1]  # 金额小写
                bigMoney = table.row_values(i)[2]  # 金额大写
                month = table.row_values(i)[5]  # 月份
                day = table.row_values(i)[6]  # 天
                SMoney = str(smallMoney).replace(".0", "")#上面的数据打印出来会有.0,但是我们不需要,所以剔除。
                SMonth = str(month).replace(".0", "")
                Sday = str(day).replace(".0", "")
                context = {
                    "name": name,  # 姓名
                    "idCard": idCard,  # 身份证号码
                    "smallMoney": SMoney,  # 金额小写
                    "bigMoney": bigMoney,  # 金额大写
                    "month": SMonth,  # 月
                    "day": Sday  # 天
                }
                word = DocxTemplate(r'C:\Users\22815\Desktop\打印\个人工资结清承诺书.docx')
                print(context)
                word.render(context)
                word.save(names + "-" + "{}".format(name) + ".docx")
            print("保存成功")
    
    
    if __name__ == '__main__':
        main()
    
    

    问题-总结

    以上便是关于该问题的解决代码,仍有许多完善之处:如保存路径和目录的生成等,仍需继续改进。
    新手小白,刚上路,有许多知识不清楚,还望大家多多指点一下我,谢谢啦。

    展开全文
  • 代码用于读Excel中的数据,然后批量写进word,文件的读写有专门的类,对于批量处理excel很有帮助
  • 今天小编就为大家分享一篇python读取excel指定列数据并写入到新的excel方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 主要介绍了python3 读取Excel表格中的数据的相关资料,需要的朋友可以参考下
  • 主要介绍了Python读取excel文件中带公式的值的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 主要介绍了python 读取excel时, 日期变成数字并加.0的问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • Python3.0 xlrd pymysql 读取Excel内容并将信息存入mysql。
  • 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'}]
    

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

    展开全文
  • 主要为大家详细介绍了python操作EXCEL数据、写数据的实例源码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • python读取Excel表格文件

    万次阅读 多人点赞 2019-07-26 10:55:52
    python读取Excel表格文件,例如获取这个文件的数据 python读取Excel表格文件,需要如下步骤: 1、安装Excel读取数据的库-----xlrd 直接pip install xlrd安装xlrd库 #引入Excel库的xlrd import xlrd 2、...

    python读取Excel表格文件,例如获取这个文件的数据

    python读取Excel表格文件,需要如下步骤:

    1、安装Excel读取数据的库-----xlrd

    直接pip install xlrd安装xlrd库

    #引入Excel库的xlrd
    import xlrd

    2、获取Excel文件的位置并且读取进来

    #导入需要读取Excel表格的路径
    data = xlrd.open_workbook(r'C:\Users\NHT\Desktop\Data\\test1.xlsx')
    table = data.sheets()[0]

    3、读取指定的行和列的内容,并将内容存储在列表中(将第三列的时间格式转换)

    #创建一个空列表,存储Excel的数据
    tables = []
    
    
    #将excel表格内容导入到tables列表中
    def import_excel(excel):
       for rown in range(excel.nrows):
          array = {'road_name':'','bus_plate':'','timeline':'','road_type':'','site':''}
          array['road_name'] = table.cell_value(rown,0)
          array['bus_plate'] = table.cell_value(rown,1)
          #将Excel表格中的时间格式转化
          if table.cell(rown,2).ctype == 3:
             date = xldate_as_tuple(table.cell(rown,2).value,0)
             array['timeline'] = datetime.datetime(*date)
          array['road_type'] = table.cell_value(rown,3)
          array['site'] = table.cell_value(rown,4)
          tables.append(array)

    4、运行程序

    if __name__ == '__main__':
       #将excel表格的内容导入到列表中
       import_excel(table)
       #验证Excel文件存储到列表中的数据
       for i in tables:
           print(i)

    5、最终的运行效果如下:

    6、完整的程序代码:

    import xlrd
    from xlrd import xldate_as_tuple
    import datetime
    
    #导入需要读取的第一个Excel表格的路径
    data1 = xlrd.open_workbook(r'C:\Users\NHT\Desktop\Data\\test.xlsx')
    table = data1.sheets()[0]
    #创建一个空列表,存储Excel的数据
    tables = []
    #将excel表格内容导入到tables列表中
    def import_excel(excel):
       for rown in range(excel.nrows):
          array = {'road_name':'','bus_plate':'','timeline':'','road_type':'','site':''}
          array['road_name'] = table.cell_value(rown,0)
          array['bus_plate'] = table.cell_value(rown,1)
          if table.cell(rown,2).ctype == 3:
             date = xldate_as_tuple(table.cell(rown,2).value,0)
             array['timeline'] = datetime.datetime(*date)
          array['road_type'] = table.cell_value(rown,3)
          array['site'] = table.cell_value(rown,4)
          tables.append(array)
    
    if __name__ == '__main__':
       #将excel表格的内容导入到列表中
       import_excel(table)
       for i in tables:
           print(i)

                                                                  关注公众号“人工智能技术服务”,获取更多的资讯。

    展开全文
  • python读取excel数据到mysql

    千次阅读 2019-09-10 17:31:42
    最近工作中需要临时将外部的excel数据导入到自己公司的系统中,作为原始的数据进行后续处理,一开始打算写一段程序进行处理的,想想还是放弃了,因为java程序读取excel数据到mysql总体来说还是比较麻烦的,而且...

    最近工作中需要临时将外部的excel数据导入到自己公司的系统中,作为原始的数据进行后续处理,一开始打算写一段程序进行处理的,想想还是放弃了,因为java程序读取excel的数据到mysql总体来说还是比较麻烦的,而且字段要一一对应上,如果是字段特别多,碰巧表也特别多的时候,这个工作量就比较大了,而且极其容易出错

    excel生成批量sql语句

    小编听说excel可以可以通过简单的函数生成批量的sql语句然后放到mysql的客户端进行批量插入也是一个不错的办法,先简单截个图介绍一下使用方法,以备后续查阅,如下

    1、步骤1 ,准备一条原始的sql语句,比如我这里有一张表叫做temp表,里面的有10个字段,分别是a1 - a10,那么原始的sql语句应该是下面这样的,

    insert into temp(a1,a2,a3,a4,a5,a6,a7) values ('?','?','?','?','?','?','?');
    

    在这里插入图片描述

    2、放在excel中怎么生成insert的sql语句呢?稍微改装一下即可,比如我们要导入到数据库的exc

    展开全文
  • 原标题:一文看懂用Python读取Excel数据导读:现有的Excel分为两种格式:xls(Excel 97-2003)和xlsx(Excel 2007及以上)。Python处理Excel文件主要是第三方模块库xlrd、xlwt、pyexcel-xls、xluntils和pyExcel-...
  • 主要介绍了python读取并定位excel数据坐标系详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • python读取excel表格数据

    千次阅读 2018-09-05 17:22:38
    xlrd是python读取excel的支持库。 在用python读取excel表格数据前,需要先安装xlrd库。 安装步骤: 1.进入到dos命令行 2.切换目录到Scripts下,通过电脑管家可以搜索python,可以快速切换到Scripts目录下。 ...
  • 使用python语言实现Excel 表格中的数据读取,需要用到xlrd.py模块,实现程序如下:import xlrd #导入xlrd模块class ExcelData():def __init__(self,data_path,sheetname):self.data_path = da...
  • 读取excel数据需要用到xlrd模块,在命令行运行下面命令进行安装 pip install xlrd 表格内容大致如下,有若干sheet,每个sheet记录了同一所学校的所有学生成绩,分为语文、数学、英语、综合、总分 考号 姓名 ...
  • 一,要读取数据的格式: 二,数据读取部分: b站视频参考:https://www.bilibili.com/video/BV14C4y1W7Nj?t=148 1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 1930 workbook=xlrd.open_workbook('1930.xlsx') sheet= ...
  • 如下所示: # -*- coding: utf-8 -*- # @ author hulei 2016-5-3 from numpy import * import operator ...def getDataSet(filename,numberOfFeature): #将数据集读入内存 fr = open(filename) numberOfLines =
  • python读取数据并画图

    2018-01-08 16:20:51
    python 读取数据 作图,读取txt文件,plot画图,调用matplotlib
  • 有的时候我们把数据整理收集整理到excel中,那么要把excel中的某列文本数据制作词云图怎么做呢? 从最简单的说起。 最简单的词云图就是这种,英文的,不读取文件,不指定背景形状图片,不指定字体。 #复制文本用字符...
  • 利用python处理excel数据:将其读取出来,并且最终实现数据相乘,打印出相乘的结果,其他的运算如加减都可以类比得出 实质在于,将其转化为一个列表,接着进行赋值 以下的代码很简单,相当于一个模板,在数据...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 38,204
精华内容 15,281
关键字:

python读取excel数据

python 订阅