import os #導入os模塊
import xlwings as xw #導入xlwings模塊
app = xw.App(visible=False,add_book=False)
file_path = 'e:/table/test' #給出目標工作簿所在的文件夾路徑
file_list = os.listdir(file_path) #列出文件夾下所有文件和子文件夾的名稱
workbook = app.books.open('e:/table/text1.xlsx') #打開來源工作簿
worksheet = workbook.sheets #獲取來源工作薄中的所有工作表
for i in file_list:
if os.path.splitext(i)[1] == '.xlsx':
workbooks = app.books.open(file_path+'\\'+i) #如果是工作簿則將其打開
for j in worksheet:
contents = j.range('A1').expand('table').value #讀取來源工作簿中要復制的工作表數據
name = j.name #獲取來源工作簿中的工作表名稱
workbooks.sheets.add(name = name,after = len(workbooks,sheets)) #在目標工作簿中新增同名工作表
workbooks.sheet[name].range('A1').value = contents #將從來源工作簿中讀取的的工作表數據寫入新增工作表
workbooks.save() #保存目標工作薄
app.quit()
知識延伸:
第12行代碼中的expand()是xlwings模塊中的函數,用於擴展選擇范圍,其語法格式和常用參數含義如下。
import os #導入os模塊
import xlwings as xw #導入xlwings模塊
app = xw.App(visible=False,add_book=False)
file_path = 'e:/table/test' #給出目標工作簿所在的文件夾路徑
file_list = os.listdir(file_path) #列出文件夾下所有文件和子文件夾的名稱
workbook = app.books.open('e:/table/textAdd.xlsx')
worksheet = workbook.sheets['sheetadd'] #選中工作表“sheetadd”
value = worksheet.range('A1').expend(table) #讀取工作表“sheetadd”中的所有數據
start_cell = (2,1) #給出要復制數據的單元格區域的起始單元格
end_cell = (value.shape[0],value.shape[1]) #給出要復制數據的單元格區域的結束單元格
cell_area = worksheet.range(start_cell,end_cell).value #根據前面設定的單元格區域選取要復制的數據
for i in file_list:
if os.path.splitext(i)[1] == '.xlsx':
try:
workbooks = xw.Book(file_path+'\\'+i)
sheet = workbooks.sheets['sheetnew'] #選中要粘貼數據的工作表“sheetnew”
scope = sheet.range('A1').expand() #選中要粘貼數據的單元格區域
sheet.range(scope.shape[0]+1,1).value = cell_area #粘貼數據
workbooks.save() #保存目標工作薄
finally:
workbooks.close() #關閉目標工作簿
workbook.close() #關閉來源工作薄
app.quit()