python openpyxl打开文件关闭问题
作者:sxn777 发布时间:2023-02-19 17:27:42
标签: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("文件写入完成!")
来源:https://blog.csdn.net/sxn777/article/details/122874915


猜你喜欢
- requests是常用的请求库,不管是写爬虫脚本,还是测试接口返回数据等。都是很简单常用的工具。这里就记录一下如何用requests发送js
- 单线程执行python的内置模块提供了两个内置模块:thread和threading,thread是源生模块,threading是扩展模块,
- 什么是钩子之前有转一篇关于回调函数的文章钩子函数、注册函数、回调函数,他们的概念其实是一样的。 钩子函数,顾名思义,就是把我们自己实现的ho
- 最近的项目需要根据用户所属时区制定一些特定策略,学习、应用了若干python3的时区转换相关知识,这里整理一部分记录下来。下面涉及的几个概念
- 本文主要向大家分享了Python编程中通过Django模块实现用户注册以及邮箱验证功能的简单介绍及代码实现,具体如下。用户注册:类似于用户登
- 通过将身份认证令牌直接传给 API 服务器,可以避免使用 kubectl 代理,像这样:使用 grep/cut 方式:# 查看所有的集群,因
- 添加字段的语法:alter table tablename add (column datatype [default value][nul
- OpenCV介绍OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Ma
- 本文实例讲述了php实现的一段简单概率相关代码。分享给大家供大家参考,具体如下:<?phpfor($i=1;$i<100000;
- Python是我喜欢的语言,简洁,优美,容易使用。前两天,我很激昂的向朋友宣传Python的好处。听过之后,朋友问我:好吧,我承认Pytho
- 从今年3月份开始mysql官网开始发布相关的5.6系列的各个版本,对于mysql5.6系列的版本对一起的版本进行了全局性的细节性加强;个人感
- 在本章中,我们将学习如何使用 Bootstrap 创建表单。Bootstrap 通过一些简单的 HTML 标签和扩展的类即可创建
- 1,打开cmd安装PyQt5pip install pyqt52,PyQt5不再提供Qt Designer等工具,所以需要再安装pyqt5-
- 这里我们将对Python 3.1核心语言的变化进行分析,包括字符串的格式化、说明符以及其他方面的内容。希望这些变化能对大家了解Python
- 组建一个关于书籍、作者、出版社的例子:from django.db import modelsclass Publisher(models.
- 需要先安装openpyxl库通过pip命令安装: pip install openpyxl源码如下:#!/usr/bin/python3#-
- import上一级目录的模块python中,import module会去sys.path搜索,sys.path是个列表,并且我们可以动态修
- 首先先说一下思路:1.本地django项目打包 主要用到的是 python自带的distutils.core 下的 setup,具体代码在下
- 1.安装numpy进入python安装目录的lib下的site-packages文件夹下打开cmd输入pip install numpy下载
- 一个简单的实现class NaiveFilter():'''Filter Messages from keyword