文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python_通过openpyxl读写Excel

2023-09-25 13:05

关注

一、模块安装

openpyxl模块可实现对excel文件的读、写和修改,使用之前需要先安装该模块。

# openpyxl生成的xlsx格式支持wps和office,xls格式只支持wps,使用office打开会报错pip install openpyxl

二、 使用方法

1、新建Excel并写入数据

import openpyxl# 创建一个新的工作簿对象wb = openpyxl.Workbook()# 获取工作表对象(sheet)ws = wb.activeprint(ws)# 设置Sheet名称ws.title = '学生表'# 创建一个新sheet,可以指定名称,index表示新创建的工作簿放在第几个位置, index从0开始计数ws_1 = wb.create_sheet(index=1, title='成绩表')ws_2 = wb.create_sheet(index=2, title='科目表')# 获取所有工作表名称print(wb.sheetnames)# 方法一:写入单个单元格ws['A1'] = '姓名'ws['B1'] = '班级'ws['c1'] = '年龄'# 方法二:写入单个单元格(行,列,内容); 也可以直接ws.cell(1, 4, '学校')ws.cell(row=1, column=4, value='学校')# 写入多个单元格(追加模式,不会覆盖之前的,从有数据的下一行开始)ws.append(['王明', '三年级一班', '9岁'])# 第一列和第三列插入数据,第二列插入[None]值ws.append(['王五', None, '10岁'])# 追加第二行数据,过滤空值# 获取工作表总行数max_row = ws.max_rowcol_values = []# 遍历第二列所有行for row in range(1, max_row+1):    # 获取当前单元格的值    cell_value = ws.cell(row=row, column=2).value    # 如果当前单元格的值不为空    if cell_value is not None:        # 将当前单元格的值添加到列表中        col_values.append(cell_value)print("第二列有 %d 行数据" % len(col_values))ws.cell(len(col_values)+1, 2, "三年级二班")# 将新数据追加到最后一行,忽略第二列data = [['张三', '10岁'], ['李四', '15岁']]for row in data:    # 在第二列插入 None 值,实现跳过该列    row.insert(1, None)    ws.append(row)# 保存wb.save('1.xlsx')

2、读取Excel数据

import openpyxl# 获取工作簿对象wb = openpyxl.load_workbook('1.xlsx')# 获取所有工作表名称print(wb.sheetnames)# 获取工作表对象,三种方法sheet1 = wb['学生表']sheet2 = wb.worksheets[1]sheet3 = wb[wb.sheetnames[2]]print(sheet1, sheet2, sheet3)# 获取工作表名称title = sheet1.titleprint(title)# 获取工作表总行数rows = sheet1.max_row# 获取工作表总列数cols = sheet1.max_column# 总行,总列print(rows, cols)# 获取某一单元格内容(行, 列),例:2行1列,列表从1开始;也可以直接sheet1.cell(2, 1).valuecell = sheet1.cell(row=2, column=1).valueprint(cell)# 读取第一行的所有内容row_list = []for i in range(1, cols+1):    cell_value = sheet1.cell(row=1, column=i).value    row_list.append(cell_value)print(row_list)# 读取第一列的所有内容column_list = []for i in range(1, rows+1):    cell_value = sheet1.cell(row=i, column=1).value    column_list.append(cell_value)print(column_list)# 读取第二列的所有内容,不包含空值col_values = []# 遍历第二列所有行for i in range(1, rows+1):    # 获取当前单元格的值    cell_value = sheet1.cell(row=i, column=2).value    # 如果当前单元格的值不为空    if cell_value is not None:        # 将当前单元格的值添加到列表中        col_values.append(cell_value)print(col_values, len(col_values))

结果:
在这里插入图片描述

3、编辑Excel数据

import openpyxl# 获取工作簿对象wb = openpyxl.load_workbook('1.xlsx')# 获取工作表对象sheet = wb['学生表']# 修改指定单元格内容sheet.cell(row=1, column=4, value='老师')# 写入多个单元格(追加模式,不会覆盖之前的,从有数据的下一行开始)sheet.append(['王五', '三年级二班', '10岁'])# 复制"学生表",新sheet名称为"学生表 Copy"ws_2 = wb.copy_worksheet(wb['学生表'])# 保存wb.save('1.xlsx')

4、删除Excel数据

import openpyxl# 获取工作簿对象wb = openpyxl.load_workbook('1.xlsx')# 选择要删除内容的工作表和单元格(行, 列)sheet1 = wb['学生表']cell_to_delete = sheet1.cell(row=2, column=1)# 删除单元格内容cell_to_delete.value = None# 删除 成绩表 工作表del wb['成绩表']# 保存wb.save('1.xlsx')

来源地址:https://blog.csdn.net/qq_45664055/article/details/128447515

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯