python_读写excel

1.openpyxl读写工作簿

1.读取工作簿(Excel)

  • 读取操作
    
    wb = openpyxl.open('./files/python数据分析1.xlsx')
    # wb = openpyxl.load_workbook('./files/python数据分析1.xlsx')
  • 查看工作表目录
    
    print(wb.sheetnames) #['Sheet', '学生信息', '学生联系方式', 'Sheet1']
    # 1) 当前表(关闭时停留的表)
    # sheet1 = wb.active
    # 2) 指定表
    sheet1 = wb['学生信息']
  • 获取列表中第一行第一列元素
    
    cell = sheet1.cell(1,1).value
    print(cell)
  • 获取全部元素,形成字典
    
    r = sheet1.max_row # 获取最大行
    c = sheet1.max_column # 获取最大列
    list1 = [] # 存列表中每一行元素(字典)
    for i in range(2,r+1):
        dict1 = {}
        for j in range(1,c+1):
            cell_key = sheet1.cell(1,j).value
            cell_value = sheet1.cell(i,j).value
            dict1[cell_key] = cell_value
        list1.append(dict1)
    print(list1)

2.写入工作簿(Excel)

  • 创建工作簿构造器

	wb = openpyxl.Workbook()
    wb1 = openpyxl.load_workbook('./files/data.xlsx')
  • 创建工作表
    
    # 1)默认表
    # wb.create_sheet()
    # 2)指定表
    if 'student' not in wb.sheetnames:
        wb.create_sheet('student')
    else:
        print('已经存在')
    # 3)指定位置插入表
    wb.create_sheet('teacher',0)
  • 删除工作表
    
    # 工作簿.remove(工作表对象)
    if 'teacher' in wb1.sheetnames:
        wb.remove(wb['teacher'])
  • 修改单元格内容
    
    # sheet5 = wb1['原始数据']
    # sheet5.cell(1,6).value = '平均分'
  • 保存工作簿
    
    wb.save('./files/data4.xlsx')

2.xlrd读取工作簿

1.打开excel文件获取工作簿对象

	
    wb = xlrd.open_workbook('./files/data1.xls')

2.获取所有工作表的表名

    
    print(wb.sheet_names())

3.获取工作表

    
    sheet_stu = wb.sheet_by_name('students')  # 括号里表名
    print(sheet_stu)
    sheet_teacher = wb.sheet_by_index(1)  # 括号里索引
    print(sheet_teacher)

4.获取表的信息(行和列)

    
    print(sheet_stu.nrows)
    print(sheet_stu.ncols)

5.获取某一行或列数据

    
    result = sheet_stu.row_values(1)  # 行下标
    print(result)
    result = sheet_stu.col_values(2)  # 列下标
    print(result)
    result = sheet_stu.col_values(0, 3, 5)  # (列下标,开始行下标,结束行下标)  取某一列的数据,3-5控制行数
    print(result)
    result = sheet_stu.row_values(2, 0, 2)  # (行下标,开始列下标,结束列下标)   取某一行的数据,0-2控制列数
    print(result)

6.获取指定单元格的数据

    
    res = sheet_stu.cell_value(0, 1)
    print(res)
    # 读出数据以字典方式返回
    import xlrd
    wb = xlrd.open_workbook('./files/data1.xls')
    sheet_stu = wb.sheet_by_name('students')
    r = sheet_stu.nrows
    c = sheet_stu.ncols
    list1 = []
    for i in range(1, r):
        dict1 = {}
        stu = sheet_stu.row_values(i)
        for j in range(c):
            dict1[sheet_stu.cell_value(0, j)] = stu[j]
        list1.append(dict1)
    print(list1)

3.xlrd写入工作簿

1.新建工作簿

    
    wb = xlwt.Workbook()

2.新建工作表

	
    stu_sheet = wb.add_sheet('students')

3.写入数据

    
    # 工作表.write(行下标,列下标,数据)
    # 第一行的内容分别是:name、gender、age、score
    data = [
        ['小明', '男', 20.0, 99.0],
        ['张三', '男', 25.0, 87.0],
        ['小花', '女', 22.0, 95.0],
        ['老王', '男', 30.0, 77.0]
    ]
    list1 = ['name', 'gender', 'age', 'score']
    data.insert(0, list1)
    row = 0
    for stu in data:
        cow = 0
        for j in stu:
            stu_sheet.write(row, cow, j)
            cow += 1
        row += 1

4.保存文件

	
    wb.save('files/data2.xls')

4.xlrd添加样式

1.创建样式对象

	
    style1 = xlwt.XFStyle()

2.创建字体对象

	
    font1 = xlwt.Font()

3.将字体对象关联到样式中

	
    style1.font = font1

4.添加字体相关属性

    
    font1.name = '宋体'  # 设置字体名称
    font1.height = 20 * 20  # 设置字体大小
    font1.colour_index = 10
    font1.bold = True  # 是否加粗
    font1.italic = True  # 是否倾斜
    # 颜色只能使用xlwt.Style.color_map
    # print(xlwt.Style.colour_map)

5. 写入数据的时候添加样式

	
    sheet1.write(1, 0, '苹果', style1)
    # 1.创建样式对象

    style2 = xlwt.XFStyle()

    # 2.创建填充对象

    pattern1 = xlwt.Pattern()

    # 3.将填充对象关联到样式对象中

    style2.pattern = pattern1

    # 4.设置填充属性

    pattern1.pattern = pattern1.SOLID_PATTERN   #   设置填充模式
    pattern1.pattern_fore_colour = 52  # 设置填充颜色

    # 5.写入数据是添加样式

    sheet1.write(1,1,'',style2)

    # ===================================设置行高和列宽度

    # 1.设置列宽度

    sheet1.col(0).width = 100 * 256

    # 2.设置行高 允许设置某一行的高度
    
    sheet1.row(2).height_mismatch = True
    sheet1.row(2).height = 40 * 60
    wb.save('./files/data3.xls')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值