python openpyxl打开文件关闭问题

作者:sxn777 时间:2023-02-19 17:27:42 

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

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

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

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

python openpyxl打开文件关闭问题

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

标签:python,openpyxl,打开文件,关闭
0
投稿

猜你喜欢

  • python实现键盘输入的实操方法

    2022-07-25 19:18:25
  • javascript实现数独解法

    2023-10-17 17:18:28
  • Python基于sklearn库的分类算法简单应用示例

    2022-08-21 19:44:42
  • vuex页面刷新后数据丢失的方法

    2024-05-09 15:19:29
  • Python完全识别验证码自动登录实例详解

    2023-12-17 03:58:14
  • Python-Selenium自动化爬虫

    2021-04-04 10:55:39
  • Python MySQL 日期时间格式化作为参数的操作

    2024-01-12 23:52:13
  • python实现Dijkstra算法的最短路径问题

    2023-05-18 23:22:15
  • python异常处理try的实例小结

    2022-01-25 06:06:51
  • nodejs开发——express路由与中间件

    2024-05-11 10:18:04
  • Python函数式编程实现登录注册功能

    2022-02-16 14:03:31
  • TF-IDF算法解析与Python实现方法详解

    2021-12-28 02:38:47
  • Bootstrap轮播插件简单使用方法介绍

    2024-04-27 15:19:06
  • asp.net mvc4 mysql制作简单分页组件(部分视图)

    2024-01-27 17:56:36
  • pandas中去除指定字符的实例

    2023-11-29 22:41:35
  • python将字符串转换成json的方法小结

    2023-11-17 23:58:57
  • CSS写法性能

    2009-05-28 19:09:00
  • 如何在ADO服务器端利用好缓存技术?

    2010-06-17 12:49:00
  • javascript操作向表格中动态加载数据

    2024-04-27 15:21:09
  • Python多线程应用于自动化测试操作示例

    2021-04-09 19:20:58
  • asp之家 网络编程 m.aspxhome.com