操作作業簿
01 新建一個excel作業簿
#2023-4-17 import xlwings as xw # 啟動 excel,但不新建作業簿 app是什么,app是excel程式本身 app = xw.App(visible=True,add_book=True) #新建一個作業簿 workbook=app.books.add() # 保存新建的作業簿 workbook.save('D:\python_data/test.xlsx') workbook.close() #關閉excel軟體 app.quit()
02 批量新建多個作業簿
#2023-4-17 import xlwings as xw # 啟動 excel,但不新建作業簿 app是什么,app是excel程式本身 app = xw.App(visible=False,add_book=False) #后臺運行 for i in range(1,13): #左閉右開 workbook=app.books.add() workbook.save(f'D:\\python_data\\excelbook\\{i}月報表.xlsx') workbook.close() #關閉excel軟體 app.quit()
03 打開已有的作業簿
import xlwings as xw app = xw.App(visible=True,add_book=False) app.books.open(f'D:\\python_data\\發票資訊.xlsx')
04 打開檔案夾下的所有作業簿
import xlwings as xw from pathlib import Path #打開excel軟體 app=xwapp = xw.App(visible=True,add_book=False) #需要一個excel檔案的list folder_path=Path('C:\\Users\\hank-02\\Desktop\\新建檔案夾 (2)') #這里用了相對路徑,相對路徑要雙斜線\\ excel_file_list=folder_path.glob('*.xls*') # 判斷檔案夾下檔案的擴展名是否為xls,或者xlsx for file in excel_file_list: app.books.open(file)
05 重命名多個作業簿
from pathlib import Path #第一步獲取符合條件的檔案串列 file_path=Path('D:\\python_data\\excelbook') #待重命名作業簿所在的檔案夾 file_list=file_path.glob('*月.xlsx') #查找檔案夾下所有與 月結尾的作業簿匹配的檔案 #遍歷上述串列,回圈重命名檔案 for old_file in file_list: old_file_name=old_file.name #獲取當前檔案名 new_file_name=old_file_name.replace('月','月報表') #通過替換字串方法生成新的檔案名 new_file=old_file.with_name(new_file_name) #通過with_name 生成一個新的檔案物件 old_file.rename(new_file) #通過rename方法重命名檔案06 批量修改作業簿格式
#批量轉換作業簿的格式,將所有的xlsx格式檔案,另存為xls格式的檔案 from pathlib import Path import xlwings as xw app = xw.App(visible=False,add_book=False) folder_path=Path('D:\\python_data\\excelbook') # 給出作業簿所在的檔案夾路徑 file_list=folder_path.glob('*.xlsx') #查找檔案夾下所有xlsx的作業簿檔案 for file in file_list: if '$' in file.name: #如果檔案包含臨時檔案,則跳過 continue; print('開始轉換:'+file.name) new_file_path=str(file.with_suffix('.xls')) workbook=app.books.open(file) workbook.api.SaveAs(new_file_path,FileFormat=56) workbook.close() print('完成轉換:'+ new_file_path) #關閉excel軟體 app.quit()07 拆分一個作業簿變成多個新作業簿
#拆分一個作業簿變成多個新作業簿 from pathlib import Path import xlwings as xw app = xw.App(visible=False,add_book=False) source_workbook=app.books.open('D:\\python_data\\excelbook\\拆分作業簿.xlsx')#打開需要拆分的作業簿 source_worksheets=source_workbook.sheets #獲取拆分作業簿里面是所有sheet for worksheet in source_worksheets: #1 新建一個目標作業簿workbook new_workbook=app.books.add() #2 創建第一個sheet, 選擇目標作業簿中的第一表 new_worksheet=new_workbook.sheets[0] #3 復制sheet內容到新sheet中 worksheet.copy(before=new_worksheet) #4 保存并關閉 new_workbook.save(f'D:\\python_data\\excelbook\\拆分后的\\{worksheet.name}.xlsx') new_workbook.close() source_workbook.close() #關閉excel軟體 app.quit()08 將多個作業簿合并為一個作業簿
from pathlib import Path import pandas as pd file_list =Path('C:\\Users\\hank-02\\Desktop\\測驗資料').glob('*.xlsx') frozen_file_list=[] for i in file_list: frozen_file_list.append(i) with pd.ExcelWriter('C:\\Users\\hank-02\\Desktop\\測驗資料\\總表.xlsx') as workbook: for file in frozen_file_list: #讀取單個檔案,只讀了資料本身,沒有把格式一并讀出來file.stem data=https://www.cnblogs.com/lxhui/p/pd.read_excel(file,sheet_name=0) data.to_excel(workbook,sheet_name=file.stem,index=False)09 按照擴展名分類作業簿
from pathlib import Path folder_path=Path('C:\\Users\\hank-02\\Desktop\\測驗資料') #資料源 file_list=folder_path.glob('*.xls*') #1、遍歷檔案串列 for i in file_list: suffix_name=i.suffix new_folder_path=Path('C:\\Users\\hank-02\\Desktop\\測驗資料\\'+suffix_name.replace('.',''))#測驗資料后面要加個\\,代表是在這個檔案夾下進行分類 #2、判斷當前檔案擴展名,查看擴展名目錄是否存在,不存在的話就創建一個新的目錄 if not new_folder_path.exists(): new_folder_path.mkdir() #3、移動檔案 i.replace(new_folder_path/i.name)10 按照日期分類作業簿
from pathlib import Path from time import localtime folder_path=Path('C:\\Users\\hank-02\\Desktop\\測驗資料') file_list=folder_path.glob('*.xls*') #1、遍歷檔案串列 for i in file_list: #2、根據檔案最好修改日期的年份和月份,組成目錄 lm_date=i.stat().st_mtime year=localtime(lm_date).tm_year month=localtime(lm_date).tm_mon new_folder_path=folder_path/str(year)/str(month) if not new_folder_path.exists(): new_folder_path.mkdir(parents=True) i.replace(new_folder_path/i.name)
11 精確查找作業簿
from pathlib import Path folder_path_str = input('請輸入查找的路徑:') file_name_str= input('請輸入要查找的作業簿名稱:') folder_path = Path(folder_path_str) file_list = folder_path.rglob(file_name_str) # rglob 用于指定檔案夾及其子檔案夾中查找名稱符合指定規則的檔案或檔案 for i in file_list: print(i)
12 按關鍵字查找作業簿
from pathlib import Path folder_path_str = input('請輸入查找的路徑:') key_word= input('請輸入關鍵字:') folder_path = Path(folder_path_str) file_list = folder_path.rglob(f'*{key_word}*.xls*') #rglob 用于指定檔案夾及其子檔案夾中查找名稱符合指定規則的檔案或檔案 for i in file_list: print(i)
13 保護一個作業簿的結構
import xlwings as xw app=xw.App(visible=False,add_book=False) workbook=app.books.open('C:\\Users\\hank-02\\Desktop\\作業\\交接檔案\\南山固定資產.xlsx') workbook.api.Protect(Password='123',Structure=True,Windows=False) workbook.save() workbook.close() app.quit()
14 加密保護一個作業簿
import xlwings as xw app=xw.App(visible=False,add_book=False) workbook=app.books.open('C:\\Users\\hank-02\\Desktop\\作業\\交接檔案\\南山固定資產.xlsx') workbook.api.Password='123' workbook.save() workbook.close() app.quit()15 加密保護多個作業簿
from pathlib import Path import xlwings as xw app=xw.App(visible=False,add_book=False) folder_path=Path('C:\\Users\\hank-02\\Desktop\\測驗資料\\2023\\5') file_list=folder_path.glob('*.xls*') for i in file_list: workbook=app.books.open(i) workbook.api.Password='123' workbook.save() workbook.close() app.quit()
操作作業表
16 提取一個作業簿中所有作業表的名稱
#提取一個作業簿中所有作業表的名稱(方法一:) import xlwings as xw app=xw.App(visible=False,add_book=False) workbook=app.books.open('C:\\Users\\hank-02\\Desktop\\2023-3-31南山固定資產(重要).xlsx') worksheets=workbook.sheets sheet_name_list=[] for i in worksheets: sheet_name_list.append(i.name) workbook.close() app.quit() print(sheet_name_list) #提取一個作業簿中所有作業表的名稱(方法二:) import pandas as pd file_path='C:\\Users\\hank-02\\Desktop\\2023-3-31南山固定資產(重要).xlsx' data=pd.read_excel(file_path,sheet_name=None) #print(type(data))#data是字典型別 worksheet_name=list(data.keys()) print(worksheet_name)
17 在一個作業薄中新增一個作業表
#在一個作業薄中新增一個作業表 import xlwings as xw app=xw.App(visible=False,add_book=False) workbook=app.books.open('C:\\Users\\hank-02\\Desktop\\2023-3-31南山固定資產(重要).xlsx') worksheets=workbook.sheets new_sheet_name='測驗' sheet_name_list=[] for i in worksheets: sheet_name_list.append(i.name) if new_sheet_name not in sheet_name_list: worksheets.add(name=new_sheet_name) workbook.save() workbook.close() app.quit()
18 在一個作業簿中洗掉一個作業表
#在一個作業簿中洗掉一個作業表 import xlwings as xw app=xw.App(visible=False,add_book=False) workbook=app.books.open('C:\\Users\\hank-02\\Desktop\\2023-3-31南山固定資產(重要).xlsx') worksheets=workbook.sheets del_sheet_name='測驗' for i in worksheets: if i.name==del_sheet_name: i.delete() break workbook.save() workbook.close() app.quit()
19 在多個作業簿中批量新增作業表
#在多個作業簿中批量新增作業表 import xlwings as xw from pathlib import Path #1、獲取檔案串列 file_list=Path('C:\\Users\\hank-02\\Desktop\\新建檔案夾2').glob('*.xls*') new_sheet_name='測驗表' app=xw.App(visible=False,add_book=False) for file in file_list: workbook=app.books.open(file) worksheets=workbook.sheets sheet_name_list=[] for i in worksheets: sheet_name_list.append(i.name) if new_sheet_name not in sheet_name_list: worksheets.add(name=new_sheet_name) workbook.save() workbook.close() app.quit()20 在多個作業簿中批量洗掉作業表
#在多個作業簿中批量洗掉作業表 import xlwings as xw from pathlib import Path #1、獲取檔案串列 file_list=Path('C:\\Users\\hank-02\\Desktop\\新建檔案夾2').glob('*.xls*') del_sheet_name='測驗表' app=xw.App(visible=False,add_book=False) for file in file_list: workbook=app.books.open(file) worksheets=workbook.sheets for i in worksheets: if i.name==del_sheet_name: i.delete() break workbook.save() workbook.close() app.quit()
行/列操作
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/554529.html
標籤:Python
下一篇:返回列表
