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("文件写入完成!")
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
详解使用django-mama-cas快速搭建CAS服务的实现
这篇文章主要介绍了详解使用django-mama-cas快速搭建CAS服务的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-10-10Python Pillow Image.save 保存为jpg图片压缩问题
Pillow 库支持多种图片格式,Pillow 能够很轻松地实现图片格式之间的转换。本文就来详细的介绍一下Image.save的具体使用,感兴趣的可以了解一下2021-11-11
最新评论