本文基于Python 的os和xlwingsm模塊實作Excel的各種作業表和作業簿操作實體,
目錄
模塊os介紹:
xlwings模塊簡介:
案例實作程序:
1、批量新建并保存作業簿:
2、批量打開一個檔案夾下的所有作業簿
3、批量重命名一個作業簿中的所有作業表
4、 在多個作業簿中批量新增作業表
5、 批量列印作業簿
模塊os介紹:
os模塊是Python和作業系統進行互動的一個介面,它提供了許多操作檔案及檔案夾的函式,
比如:
- 要獲取當前運行的Python代碼檔案的路徑(即該檔案的保存位置),可以用os模塊中的getcwd()函式來實作,
import os
path = os.getcwd()
print(path)
- 如果要查看某個檔案夾包含的所有檔案和子檔案夾的名稱,可以使用os模塊中的listdir()函式,
import os
path = 'e:\\python'
file_list = os.listdir(path)
print(file_list)
- 如果要分離一個檔案的檔案主名和擴展名,可以使用splitext()函式,
import os
path = 'example.xlsx'
separate = os.path.splitext(path)
print(separate)
- os模塊中的rename()函式可以重命名檔案和檔案夾,該函式的語法格式如下:rename(src, dst) 以下代碼將D盤的“list”檔案夾重命名為“newlist”,
import os
oldname = 'd:\\list'
newname = 'd:\\newlist'
os.rename(oldname, newname)
xlwings模塊簡介:
可以處理Excel檔案的Python模塊有很多,如XlsxWriter、xlrd、xlwt、xlutils、openpyxl和xlwings等,
下表對各個模塊的功能進行了簡單對比,

通過上表的對比可以發現,xlwings模塊的功能是最齊全的,它不僅能讀、寫和修改兩種格式的Excel檔案(xls和xlsx),而且能批量處理多個Excel檔案,
此外,xlwings模塊還能與Excel VBA結合使用,實作更加強大的資料輸入和分析功能,
案例實作程序:
1、批量新建并保存作業簿:
import xlwings as xw
app = xw.App(visible = True, add_book = False)
for i in range(6):
workbook = app.books.add()
workbook.save(f'e:\\PythonOffice\\test_table\\test{i}.xlsx')
workbook.close()
app.quit()
實作結果如下:

2、批量打開一個檔案夾下的所有作業簿
實作思路:
- 檔案夾內列出所有的檔案名,并存入陣列,
- 打開Excel作業簿
- 回圈判斷檔案是否為Excel,如果是則打開檔案,
實作代碼:
import os
import xlwings as xw
file_path = 'e:\\PythonOffice\\test_table'
file_list = os.listdir(file_path)
app = xw.App(visible = True, add_book = False)
for i in file_list:
if os.path.splitext(i)[1] == '.xlsx':
app.books.open(file_path + '\\' + i)
3、批量重命名一個作業簿中的所有作業表

以下代碼將作業表名中的銷售替換為空白:
import xlwings as xw
app = xw.App(visible = False, add_book = False)
workbook = app.books.open('e:\\table\\統計表.xlsx')
worksheets = workbook.sheets
for i in range(len(worksheets)):
worksheets[i].name = worksheets[i].name.replace('銷售', '')
workbook.save('e:\\table\\統計表1.xlsx')
app.quit()
4、 在多個作業簿中批量新增作業表
檔案夾中有5個作業簿,我們需要在每個作業簿中插入一個名為'產品銷售區域'的作業表

實作思路:
- 獲取檔案夾內所有作業簿檔案名并存入陣列
- 定義好新作業表名稱
- 在回圈中插入作業表
實作代碼:
import os
import xlwings as xw
file_path = 'e:\\table\\銷售表'
file_list = os.listdir(file_path)
sheet_name = '產品銷售區域'
app = xw.App(visible = False, add_book = False)
for i in file_list:
if i.startswith('~$'):
continue
file_paths = os.path.join(file_path, i)
workbook = app.books.open(file_paths)
sheet_names = [j.name for j in workbook.sheets]
if sheet_name not in sheet_names:
workbook.sheets.add(sheet_name)
workbook.save()
app.quit()
5、 批量列印作業簿
現在我們檔案夾內有6個作業簿,我們需要將每個作業簿中名為產品分類表的資料全部列印出來,


實作思路:
- 獲取檔案夾內所有作業簿檔案名并存入陣列
- 在回圈中依次打開對應作業簿
- 在打開的作業簿中回圈判斷作業表名
- 如果表名為“產品分類表”則通過作業簿的api 屬性直接呼叫VBA的PrintOut()函式來列印作業簿,該函式的語法格式和常用引數含義如下,
PrintOut(From,To,Copies,Preview,ActivePrinter,PrintToFile,Collate,PrToFileName)


實作代碼:
import os
import xlwings as xw
file_path = 'e:\\table\\公司1'
file_list = os.listdir(file_path)
sheet_name = '產品分類表'
app = xw.App(visible = False, add_book = False)
for i in file_list:
if i.startswith('~$'):
continue
file_paths = os.path.join(file_path, i)
workbook = app.books.open(file_paths)
for j in workbook.sheets:
if j.name == sheet_name:
j.api.PrintOut()
break
app.quit()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/378643.html
標籤:其他
下一篇:python環境安裝
