python openpyxl打开文件关闭问题

 更新时间:2023年05月30日 14:45:30   作者:sxn777  
这篇文章主要介绍了python openpyxl打开文件关闭问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

openpyxl打开的文件是否需要关闭

如果是只读或者只写的模式下,是需要再调用close()方法关闭workbook,正常的情况下是不需要调用的。

只读只写的模式是read_only或者data_only设置为True

如果调用了save()也不用调用close(),save()源码中有关闭的操作

python文件操作--openpyxl

1.获得一个workbook对象

workbook=openpyxl.load_workbook(filename)

2.获取sheet列表

sheet_list=workbook.sheetnames

3.获取sheet对象

使用了@deprecated装饰器,所以可以使用[]语法

sheet=workbook[sheet_name]

4.获取最大行

sheet.max_row

5.获取最大列

sheet.max_column

6.获取单元格对象

sheet.cell(x,y)

7.获取单元格内的值

cell.value

8.返回所有行

sheet.rows: 返回一个生成器对象

9.返回所有列

sheet.columns:返回一个生成器对象

10.关闭文件

work.close()

11.写入内容

cell(x,y,value)
import openpyxl
from shutil import copyfile
class ReadXsl:
    def __init__(self):
        self.workbook = None
        self.sheet_list = None
        self.sheet = None
        self.max_row = 0
        self.max_col = 0
    # 打开文件
    def open_file(self, file_name):
        self.workbook = openpyxl.load_workbook(filename=file_name)
        self.sheet_list = self.workbook.sheetnames
        self.sheet = self.workbook[self.sheet_list[0]]
        self.max_row = self.sheet.max_row
        self.max_col = self.sheet.max_column
    # 设置当前sheet
    def set_sheet(self, sheet_name):
        self.sheet = self.workbook[sheet_name]
        # 更新max_row与max_col
        self.max_row = self.sheet.max_row
        self.max_col = self.sheet.max_column
    def read_lines(self):
        all_list = []
        for row in self.sheet.rows:
            line_list = []
            for cell in row:
                line_list.append(cell.value)
            all_list.append(line_list)
        return all_list
    def read_dict(self) -> list:
        all_list = []
        title_list = []
        # 将title添加到一个list中
        for row in list(self.sheet.rows)[0]:
            title_list.append(row.value)
        # 遍历内容
        for rows in list(self.sheet.rows)[1:]:
            content_list = []
            for cell in rows:
                content_list.append(cell)
            all_list.append(dict(zip(title_list, content_list)))
        return all_list
class WriteXsl(object):
    def __init__(self):
        self.workbook = None
        self.file = None
        self.sheet = None
    # 复制文件
    def copy_file(self, src_file, new_file):
        copyfile(src_file, new_file)
        self.file = new_file
        self.workbook = openpyxl.load_workbook(new_file)
    # 设置当前工作sheet
    def set_sheet(self, sheet_name):
        self.sheet = self.workbook[sheet_name]
    # 写入内容
    def write(self, row, col, value):
        self.sheet.cell(row, col, value)
    # 关闭文件
    def close(self):
        self.workbook.close()
if __name__ == '__main__':
    file_name = r'D:\test_data.xlsx'
    new_file_name = r'D:\test_data.xlsx'
    r = ReadXsl()
    w = WriteXsl()
    r.open_file(file_name=file_name)
    w.copy_file(file_name, new_file_name)
    for sheet in r.sheet_list:
        r.set_sheet(sheet)
        w.set_sheet(sheet)
        for col in range(1, r.max_col):
            w.write(col + 1, 8, 'pass')
    w.close()
    print("文件写入完成!")

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解决PDF 转图片时丢文字的一种可能方式

    解决PDF 转图片时丢文字的一种可能方式

    这篇文章主要介绍了解决PDF 转图片时丢字的一种可能方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Python 多继承中的一个诡异现象 既是 Father又是grandfather

    Python 多继承中的一个诡异现象 既是 Father又是grandfather

    我们知道,在面向对象编程里面,继承是一个很重要的概念。子类可以使用父类的方法和属性,接下来小编将用举例的方式为大家讲解Python 多继承中的一个诡异现象 其即是爸爸又是爷爷的奇葩现象,感兴趣的小伙伴可以看下面文章具体了解
    2021-09-09
  • python获取本机所有IP地址的方法

    python获取本机所有IP地址的方法

    这篇文章主要为大家详细介绍了python获取本机所有IP地址的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • 在python中使用xlrd获取合并单元格的方法

    在python中使用xlrd获取合并单元格的方法

    今天小编就为大家分享一篇在python中使用xlrd获取合并单元格的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python GUI教程之在PyQt5中使用数据库的方法

    Python GUI教程之在PyQt5中使用数据库的方法

    Qt平台对SQL编程有着良好的支持,PyQt5也一并继承了过来,这篇文章主要介绍了Python GUI教程之在PyQt5中使用数据库的方法,需要的朋友可以参考下
    2021-09-09
  • Python安装官方whl包和tar.gz包的方法(推荐)

    Python安装官方whl包和tar.gz包的方法(推荐)

    下面小编就为大家带来一篇Python安装官方whl包和tar.gz包的方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • python3个性签名设计实现代码

    python3个性签名设计实现代码

    这篇文章主要为大家详细介绍了python3个性签名设计的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • 为了顺利买到演唱会的票用Python制作了自动抢票的脚本

    为了顺利买到演唱会的票用Python制作了自动抢票的脚本

    大麦网,是中国综合类现场娱乐票务营销平台,业务覆盖演唱会、 话剧、音乐剧、体育赛事等领域。但是因为票数有限,还有黄牛们不能丢了饭碗,所以导致了,很多人都抢不到票,那么,今天带大家用Python来制作一个自动抢票的脚本小程序
    2021-10-10
  • 使用numpngw和matplotlib生成png动画的示例代码

    使用numpngw和matplotlib生成png动画的示例代码

    这篇文章主要介绍了使用numpngw和matplotlib生成png动画的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Python使用Selenium批量自动化获取并下载图片的方法

    Python使用Selenium批量自动化获取并下载图片的方法

    在现代的Web开发中,自动化测试和数据抓取已经成为不可或缺的一部分,Selenium作为一款强大的自动化测试工具,可以用于批量获取网页上的图片,所以本文给大家介绍了Python如何使用Selenium批量自动化获取并下载图片的方法
    2024-11-11

最新评论