首页 > 编程语言 >python 操作 xlsx

python 操作 xlsx

时间:2023-06-03 18:03:17浏览次数:52  
标签:xlsx sheet name python value path 操作 row

目录

  • 读取/写入:openpyxl
  • demo1

读取/写入:openpyxl

demo1

import openpyxl
import os


# 创建excel
def write_excel_xlsx(path, sheet_name, value):
    if not os.path.exists(path):
        write_new_excel_xlsx(path, sheet_name, value)
    else:
        append_write_excel_xlsx(path, sheet_name, value)

# 新创建excel
def write_new_excel_xlsx(path, sheet_name, value):
    index = len(value)
    workbook = openpyxl.Workbook()
    sheet = workbook.active
    sheet.title = sheet_name
    for i in range(0, index):
        for j in range(0, len(value[i])):
            sheet.cell(row=i + 1, column=j + 1, value=str(value[i][j]))
    workbook.save(path)
    print("xlsx格式表格写入数据成功!")

# 追加写入
def append_write_excel_xlsx(path, sheet_name, value):
    workbook = openpyxl.load_workbook(path)
    sheet = workbook[sheet_name]
    old_max_row_mum = sheet.max_row # 已存在文件最大的行数
    for i in range(len(value)):
        item = value[i]
        for column in range(len(item)):
            # print(oldRowNum + 1, column + 1, item[column])
            # 参数对应 行, 列, 值
            sheet.cell(row=old_max_row_mum + 1, column=column + 1, value=str(item[column]))
        old_max_row_mum += 1
    workbook.save(path)
    print("xlsx格式表格追加写入数据成功!")


def read_excel_xlsx(path, sheet_name):
    workbook = openpyxl.load_workbook(path)
    # sheet = wb.get_sheet_by_name(sheet_name)这种方式已经弃用,不建议使用
    # sheet = workbook.worksheets[0]
    sheet = workbook[sheet_name]

    # 方式一
    for row in sheet.rows:
        # 收集当前行每个单元格中的数据
        row_text_list = []
        for cell in row:
            row_text_list.append(cell.value)
            print(cell.value, "\t", end="")
        print(row_text_list)  # ["111", "女", "66", "石家庄", "运维工程师"]
        print()

    # 方式二
    for row in sheet.iter_rows(min_row=2):  # 从第二行开始读
        print(row[1].value)

    # 方式三
    for row in sheet.iter_rows(min_row=2, max_row=5):  # 从第2-5行数据
        if row[1].value is None:  # 没有时输出None
            continue
        print(row[1].value)


# 当前文件地址
base_dir = os.path.dirname(os.path.abspath(__file__))  # 'G:\\site\\python\\learn\\base'
book_name_xlsx = os.path.join(base_dir, 'xlsx格式测试工作簿.xlsx')  # 'G:\\site\\python\\learn\\base\\xlsx格式测试工作簿.xlsx'

sheet_name_xlsx = 'xlsx格式测试表'

value1 = [["姓名", "性别", "年龄", "城市", "职业"],
          ["111", "女", "66", "石家庄", "运维工程师"],
          ["222", "男", "55", "南京", "饭店老板"],
          ["333", "女", "27", "苏州", "保安"], ]

value2 = [
    ["444", "男", "55", "南京", "饭店老板"],
    ["55", "女", "27", "苏州", "保安"], ]

write_excel_xlsx(book_name_xlsx, sheet_name_xlsx, value1)
write_excel_xlsx(book_name_xlsx, sheet_name_xlsx, value2)
# read_excel_xlsx(book_name_xlsx, sheet_name_xlsx)

更多文档:


标签:xlsx,sheet,name,python,value,path,操作,row
From: https://blog.51cto.com/u_6192297/6408348

相关文章

  • Python潮流周刊#5:并发一百万个任务要用多少内存?
    你好,我是猫哥。这里记录每周值得分享的Python及通用技术内容,部分为英文,已在小标题注明。(标题取自其中一则分享,不代表全部内容都是该主题,特此声明。)博客原文:https://pythoncat.top/posts/2023-06-03-weekly5文章&教程1、并发一百万个任务要用多少内存?(英文)文中测试了主流的编......
  • python内置库-email
    email库简要介绍eamil库用来创建和解析电子邮件,这些电子邮件可结合smtp协议和pop协议来发送及收取位于email包的中心的类就是EmailMessage这个类,利用它可构造一个邮件对象,利用这个邮件对象可添加正文、添加附件、设置收发件人具体的官网文档不太好懂,下面给出几个示例实例......
  • 用chartGPT学习一门语言--python(提问示范)
    1. 2. 3. 4 5. 6. ......
  • 反射的作用之动态对实例对象进行操作
    前提:我认为,反射概念在JavaSE内容中算是一个比较绕的知识点,反射本身好理解,但实际运用起来总会让人感觉好像又不是很对;对于反射的学习,我是先学具体使用再了解的作用,对于反射的作用之一,在这里做个笔记。任务需求:对被Integer泛型约束的List集合,添加其他类型的元素一、必......
  • 记录一次QT5下多线程使用Qxlsx操作写EXCEL表文件问题
    问题表述:一个主线程和两个子线程,两个子线程进行写EXCEL表格文件,线程1写demo_1.xlsx,线程2写demo_2.xlsx,运行一段时间后程序异常退出?。代码如下://两个线程代码一样,只是写入的文件名不同QXlsx::Documentdocument("demo_x.xlsx");introwLen=document.dimension()......
  • Python 的字符串内建函数
    Pythoncapitalize()方法将字符串的第一个字母变成大写,其他字母变小写print("第一个内建函数str.capitalize()")s1='a,b's2='A,B's3='a,BCD's4='a,B'#因为a前面有个空格,所以不显示大写print(s1.capitalize())print(s2.capitalize())print(s3.capi......
  • 【python】多线程
     在Python3中,通过threading模块提供线程的功能。原来的thread模块已废弃。但是threading模块中有个Thread类(大写的T,类名),是模块中最主要的线程类,一定要分清楚了,千万不要搞混了。threading模块提供了一些比较实用的方法或者属性,例如:方法与属性描述current_thread()返......
  • python后台执行程序
    Windows系统搭建好Python的环境后,进入Python的安装目录,大家会发现目录中有python.exe和pythonw.exe两个程序。如下图所示:它们到底有什么区别和联系呢?概括说明一下:python.exe在运行程序的时候,会弹出一个黑色的控制台窗口(也叫命令行窗口、DOS/CMD窗口);pythonw.exe是无窗口的Pyth......
  • ORM操作数据库
    1. 创建数据库  40讲解 MyBatis 框架,读写 MySQL 数据。通过 SpringBoot +MyBatis 实现对数据库学生表的查询操作。数据库参考:springboot.sql 脚本文件创建数据库:数据库 springboot,指定数据库字符编码为 utf-8插入数据2. 使用步骤:41使用MyBatis框架操作数据,  在Spri......
  • 用Python开发输入法后台(10)——删除已有词
    有些已经组好的词,可能是不小心组错了,需要删除它,我的输入法暂时还不支持,现在来实现它.用户场景用户正常选词,如下所示:然后按Del键,进入删除模式最后按F1~F9键,删除指定的词......