python openpyxl打開文件關(guān)閉問題
openpyxl打開的文件是否需要關(guān)閉
如果是只讀或者只寫的模式下,是需要再調(diào)用close()方法關(guān)閉workbook,正常的情況下是不需要調(diào)用的。
只讀只寫的模式是read_only或者data_only設(shè)置為True
如果調(diào)用了save()也不用調(diào)用close(),save()源碼中有關(guān)閉的操作

python文件操作--openpyxl
1.獲得一個(gè)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.獲取單元格內(nèi)的值
cell.value
8.返回所有行
sheet.rows: 返回一個(gè)生成器對象
9.返回所有列
sheet.columns:返回一個(gè)生成器對象
10.關(guān)閉文件
work.close()
11.寫入內(nèi)容
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
# 設(shè)置當(dāng)前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添加到一個(gè)list中
for row in list(self.sheet.rows)[0]:
title_list.append(row.value)
# 遍歷內(nèi)容
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
# 復(fù)制文件
def copy_file(self, src_file, new_file):
copyfile(src_file, new_file)
self.file = new_file
self.workbook = openpyxl.load_workbook(new_file)
# 設(shè)置當(dāng)前工作sheet
def set_sheet(self, sheet_name):
self.sheet = self.workbook[sheet_name]
# 寫入內(nèi)容
def write(self, row, col, value):
self.sheet.cell(row, col, value)
# 關(guān)閉文件
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("文件寫入完成!")總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python用pickle模塊實(shí)現(xiàn)“增刪改查”的簡易功能
本篇文章主要介紹了python用pickle模塊實(shí)現(xiàn)“增刪改查”的簡易功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-06-06
python機(jī)器學(xué)習(xí)理論與實(shí)戰(zhàn)(五)支持向量機(jī)
這篇文章主要為大家詳細(xì)介紹了python機(jī)器學(xué)習(xí)理論與實(shí)戰(zhàn)第五篇,支持向量機(jī)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
Python程序中用csv模塊來操作csv文件的基本使用教程
這篇文章主要介紹了Python程序中用csv模塊來操作csv文件的基本使用教程,csv文件中也是格式化的數(shù)據(jù),只不過csv本身沒有XML和JSON那么流行...需要的朋友可以參考下2016-03-03
深入淺析python 協(xié)程與go協(xié)程的區(qū)別
這篇文章主要介紹了python 協(xié)程與go協(xié)程的區(qū)別 ,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05
python保存大型 .mat 數(shù)據(jù)文件報(bào)錯(cuò)超出 IO 限制的操作
這篇文章主要介紹了python保存大型 .mat 數(shù)據(jù)文件報(bào)錯(cuò)超出 IO 限制的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-05-05
將Python項(xiàng)目打包成exe并附帶下載功能的操作流程
這篇文章主要為大家詳細(xì)介紹了將Python項(xiàng)目打包成exe并附帶下載功能的操作流程,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解下2023-12-12

