Review Làm cách nào để sao chép các cột từ tệp excel này sang tệp excel khác trong python?
Mẹo Hướng dẫn Làm cách nào để sao chép những cột từ tệp excel này sang tệp excel khác trong python? 2022
Bùi Thảo Ngọc đang tìm kiếm từ khóa Làm cách nào để sao chép những cột từ tệp excel này sang tệp excel khác trong python? được Cập Nhật vào lúc : 2022-12-18 04:08:03 . Với phương châm chia sẻ Bí kíp về trong nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi Read nội dung bài viết vẫn ko hiểu thì hoàn toàn có thể lại Comment ở cuối bài để Tác giả lý giải và hướng dẫn lại nha.Đây là một cách tự động hóa khác từ sự sáng tạo (sự lười biếng) của tôi khi thực hiện những trách nhiệm lặp đi lặp lại. Vì vậy, tôi được yêu cầu phối hợp một số trong những Sổ thao tác Excel theo ngày trong tên tệp. Lúc đầu, tôi rất tích cực, vì trách nhiệm này đơn giản với việc sử dụng Python. Tất cả những gì tôi cần làm là đọc tệp bằng
# copy worksheet above from wb1 to wb2wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))0, sau đó sử dụng phương pháp # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))1 ma thuật, sau đó lưu tệp đó vào một tệp mới. Xong Nội dung chính Show
- 1. Sao chép/phối hợp một Worksheet từ một Workbook sang một Workbook hiện có khác2. Sao chép/phối hợp Worksheet từ nhiều Workbook vào một Workbook1. Kết hợp bảng tài liệu của hai Worksheet2. Kết hợp bảng tài liệu của nhiều WorksheetLàm cách nào để sao chép những cột từ trang tính excel này sang trang tính excel khác trong Python?Làm cách nào để trích xuất tài liệu rõ ràng từ excel trong Python?
Thật rủi ro, kế hoạch này đã không thành công, vì tất cả những Sổ thao tác Excel đều có nhiều Bảng tính bên trong và có một số trong những định dạng được đặt sẵn theo những giá trị trong trang tính. Được rồi, hình nói rõ hơn, Sổ thao tác trông in như hình phía dưới
Ví dụ sổ thao tác. GIF của tác giảVì vậy, định dạng được đặt rất đẹp, phối hợp chúng bằng phương pháp sử dụng
# copy worksheet above from wb1 to wb2wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))0 sẽ vô hiệu tất cả những định dạng, điều này sẽ không được đồng ý. Có MỘT giây tôi nghĩ rằng tôi sẽ tuân theo phương pháp KISS (keep it simple ngu ngốc), đó là mở từng Workbook Excel, sao chép và dán từng cái một. Tuy nhiên, tốc độ xử lý đã giết chết tôi🤦♂️
Một lần nữa, tôi sẽ sử dụng thư viện Python yêu thích của tớ cho tác vụ tự động hóa này, đó là ✨ PyWin32 ✨
25 Workbook để phối hợp trong những ví dụ sau. Hình ảnh của tác giảĐối với hướng dẫn này, 25 Sổ thao tác Excel, mỗi sổ chỉ có một Trang tính đã được sẵn sàng sẵn sàng (được tạo bởi tập lệnh Python). Sổ thao tác có thông tin về lợi nhuận cho từng chi nhánh của những Quốc gia được chọn tại Malaysia, từ tháng 5 đến tháng 9 năm 2022 như trong hình phía dưới
Giao diện bên trong của mỗi sổ thao tác. Hình ảnh của tác giảThe Workbooks are named following this format: .xlsx, while the Worksheets are named following this format:_.
Mỗi Worksheet có định dạng đặt trước như sau
Bộ lọc tự độngTự động điều chỉnhĐịnh dạng có điều kiệnTrong nội dung bài viết này, hai loại sao chép-dán của Bảng tính Excel sẽ được trình bày
Sao chép toàn bộ Trang tính Excel và dán nó dưới dạng Trang tính mới trong Sổ thao tác Excel khácSao chép bảng tài liệu của một Bảng tính Excel và dán phía dưới bảng tài liệu hiện có của một Bảng tính Excel khácCuối cùng nhưng không kém phần quan trọng, tôi sẽ thường xuyên đề cập đến những từ như Đối tượng, Phương thức hoặc Thuộc tính trong mỗi ví dụ phía dưới. Tôi đã viết một bài báo (Tự động hóa Excel với Python) để lý giải những khái niệm về Đối tượng, Phương thức hoặc Thuộc tính. Độc giả thân mến của tôi được khuyến khích và hoan nghênh đọc nội dung bài viết bất kể lúc nào họ có nghi ngờ về ba khái niệm
Hãy khởi đầu
A. Sao chép toàn bộ Trang tính Excel và dán nó dưới dạng Trang tính mới trong Sổ thao tác Excel khác
Bạn hoàn toàn có thể xem video hoặc đọc tiếp phần này
1. Sao chép/phối hợp một Worksheet từ một Workbook sang một Workbook hiện có khác
Ví dụ này sẽ chỉ ra cách sao chép một Worksheet từ Workbook này sang Workbook hiện có khác
import win32com.client as win32from pathlib import Path
win32c = win32.constants# create excel object
excel = win32.gencache.EnsureDispatch('Excel.Application')# excel can be visible or not
excel.Visible = True # False
Bước đầu tiên là nhập thư viện và tạo Đối tượng Excel. Sau đó, tất cả chúng ta sẽ mở những Workbook liên quan
# open workbooksf_path = Path.cwd() # your path
f1_name="Penang 20190901.xlsx"
f2_name="Sabah 20190901.xlsx"
filename1 = f_path / f1_name
filename2 = f_path / f2_name
wb1 = excel.Workbooks.Open(filename1)
wb2 = excel.Workbooks.Open(filename2)
sheetname = "Penang_9"
Trong ví dụ này, chúng tôi đang sao chép một Worksheet mang tên “Penang_9” từ “Penang 20190901. xlsx” vào Sổ thao tác hiện có mang tên “Sabah 20190901. xlsx”. Sau khi những Workbook được mở lên, tất cả chúng ta hoàn toàn có thể khởi đầu thao tác sao chép Worksheet
# copy worksheet above from wb1 to wb2wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))
Đối với thao tác này, chúng tôi đã sử dụng Phương thức Sao chép từ Đối tượng Bảng tính
# remove hashtag to save and quit modified Excel file#wb2.Save()
#wb2.SaveAs(Filename = r"new file name.xlsx") # save as new Workbook
#wb2.Close(True)
#excel.Quit()
Bước ở đầu cuối là sử dụng Phương thức Save hoặc SaveAs để lưu Sổ thao tác đã xử lý. Phương thức Đóng được sử dụng để đóng Sổ thao tác Excel, trong khi Phương thức Thoát là để thoát khỏi Đối tượng Excel được tạo bằng Python
2. Sao chép/phối hợp Worksheet từ nhiều Workbook vào một Workbook
Trong ví dụ đầu tiên, tôi đã mã hóa cứng tên Bảng tính, điều này sẽ không được khuyến khích khi bạn đang làm điều đó cho nhiều tệp. Kịch bản sẽ rất dài và cần nhiều nỗ lực hơn để lưu tất cả những tên Bảng tính dưới dạng những biến riêng biệt
Đây là nơi chỉ mục của Bảng tính có ích. Bằng cách sử dụng Thuộc tính chỉ mục Excel (Đối tượng, Phương thức và Thuộc tính Excel) như phía dưới, tất cả chúng ta hoàn toàn có thể tạo một hàm bền vững hơn để phối hợp Trang tính từ nhiều Sổ thao tác
# return Sheet with index = 1 without stating Sheet Namews_name = wb1.Sheets(1)
Trong ví dụ này, chúng tôi sẽ phối hợp 25 Sổ thao tác thành 5 theo ngày. Mỗi Workbook ban đầu chỉ có một Worksheet bên trong. Như ví dụ A1 nên phải có 4 bước
i. Nhập thư viện
________số 8Cần có thư viện Biểu thức chính quy (tái) để xác định ngày trong tên tệp
ii. Xác định hàm để sao chép trang tính
Chức năng này là Sao chép Worksheet từ Workbook này sang Workbook khác. Điều kiện IF-ELSE là để xác định xem có bất kỳ Sổ thao tác nào được mở không. Nó sẽ mở Workbook đầu tiên và lưu nó với tên
# copy worksheet above from wb1 to wb2wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))3 nếu không còn, ngược lại nó sẽ mở Workbook thứ hai và lưu nó với tên # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))4 Sau đó, Worksheet trong # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))5 sẽ được sao chép sang # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))3
Vòng lặp for bên trong là phối hợp những Workbook trong cùng một
# copy worksheet above from wb1 to wb2wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))7, sau đó vòng lặp bên phía ngoài sẽ chuyển sang # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))7 tiếp theo khi quá trình hoàn tất. # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))9 là một list lồng nhau có chứa # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))7 bên trong, trong khi ______07 chứa những bộ tài liệu củaTên tệp có phần mở rộng (f[0]),Trạng thái (f[1]) vàNgày của tệp (f[2])
Mỗi
# copy worksheet above from wb1 to wb2wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))7 chứa những bộ tệp có cùng trong ngày như trong hình phía dướiẢnh chụp màn hình hiển thị của tổ hợp_list. Hình ảnh của tác giả
iii. Xác định hàm để đặt tên tệp vào list riêng theo tiêu chí
Chức năng này là để nhóm những tệp theo ngày trong tên tệp và lưu vào
# remove hashtag to save and quit modified Excel file#wb2.Save()
#wb2.SaveAs(Filename = r"new file name.xlsx") # save as new Workbook
#wb2.Close(True)
#excel.Quit()3. Tất cả tên tệp được lưu trong tham số # remove hashtag to save and quit modified Excel file
#wb2.Save()
#wb2.SaveAs(Filename = r"new file name.xlsx") # save as new Workbook
#wb2.Close(True)
#excel.Quit()4. Đối với mỗi tên tệp, chúng tôi sẽ biên dịch một mẫu trên đó bằng Biểu thức chính quy (lại) như hình phía dưới# copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))1
Trong dòng trên, chúng tôi muốn xác định tên Bang và ngày là một số trong những có 8 chữ số trong tên tệp. x sẽ trả về kết quả tìm kiếm, buy using
# remove hashtag to save and quit modified Excel file#wb2.Save()
#wb2.SaveAs(Filename = r"new file name.xlsx") # save as new Workbook
#wb2.Close(True)
#excel.Quit()5 ta hoàn toàn có thể chọn bất kỳ phần nào trong văn bản để sử dụng# copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))3
Chỉ mục bắt nguồn từ 0, chỉ mục 0 đề cập đến toàn bộ văn bản, chỉ mục 1 đề cập đến dấu ngoặc đơn đầu tiên, là tên gọi Bang trong ví dụ này, chỉ mục 2 đề cập đến dấu ngoặc đơn thứ hai đề cập đến ngày tháng. Điều kiện IF-ELSE là lưu ngày đầu tiên nhận được làm ngày tham chiếu, sau đó so sánh nó với phần còn sót lại của ngày trong tên tệp. Mỗi trận đấu sẽ được lưu vào
# remove hashtag to save and quit modified Excel file#wb2.Save()
#wb2.SaveAs(Filename = r"new file name.xlsx") # save as new Workbook
#wb2.Close(True)
#excel.Quit()6 dưới dạng Tuple. Sau đó, bộ tài liệu sẽ được thêm vào list chính, đó là # remove hashtag to save and quit modified Excel file
#wb2.Save()
#wb2.SaveAs(Filename = r"new file name.xlsx") # save as new Workbook
#wb2.Close(True)
#excel.Quit()7
Mỗi tên tệp được thêm vào
# remove hashtag to save and quit modified Excel file#wb2.Save()
#wb2.SaveAs(Filename = r"new file name.xlsx") # save as new Workbook
#wb2.Close(True)
#excel.Quit()7 sẽ được thêm vào # remove hashtag to save and quit modified Excel file
#wb2.Save()
#wb2.SaveAs(Filename = r"new file name.xlsx") # save as new Workbook
#wb2.Close(True)
#excel.Quit()9, WHILE-LOOP sẽ được tiếp tục cho tới lúc độ dài của # remove hashtag to save and quit modified Excel file
#wb2.Save()
#wb2.SaveAs(Filename = r"new file name.xlsx") # save as new Workbook
#wb2.Close(True)
#excel.Quit()9 bằng với list ban đầu, # remove hashtag to save and quit modified Excel file
#wb2.Save()
#wb2.SaveAs(Filename = r"new file name.xlsx") # save as new Workbook
#wb2.Close(True)
#excel.Quit()4. Một bản sao của # remove hashtag to save and quit modified Excel file
#wb2.Save()
#wb2.SaveAs(Filename = r"new file name.xlsx") # save as new Workbook
#wb2.Close(True)
#excel.Quit()4, # return Sheet with index = 1 without stating Sheet Name
ws_name = wb1.Sheets(1)3 đã được tạo ngay từ đầu và được sử dụng làm tiêu chí của FOR-LOOP. Mỗi khi tên tệp được thêm vào # remove hashtag to save and quit modified Excel file
#wb2.Save()
#wb2.SaveAs(Filename = r"new file name.xlsx") # save as new Workbook
#wb2.Close(True)
#excel.Quit()9, nó sẽ bị xóa khỏi # return Sheet with index = 1 without stating Sheet Name
ws_name = wb1.Sheets(1)3, do đó sẽ không còn sự trùng lặp
iv. Thiết lập tham số và gọi hàm
import win32com.client as win32from pathlib import Path
win32c = win32.constants# create excel object
excel = win32.gencache.EnsureDispatch('Excel.Application')# excel can be visible or not
excel.Visible = True # False4# remove hashtag to save and quit modified Excel file
#wb2.Save()
#wb2.SaveAs(Filename = r"new file name.xlsx") # save as new Workbook
#wb2.Close(True)
#excel.Quit()4 là list những tệp cần phải phối hợp. Vì những tệp được đặt tên theo một định dạng, chúng tôi hoàn toàn có thể phối hợp những tệp theo Trạng thái hoặc ngày. Trong ví dụ này, Sổ thao tác được phối hợp nhờ vào ngày. Các Sổ thao tác gốc được lưu trong thư mục mang tên “Tệp mẫu”, trong khi những Sổ thao tác phối hợp được lưu trong thư mục mang tên “Kết hợp”. Cả hai thư mục được đặt trong cùng một thư mụcĐầu ra của tập lệnh tự động hóaĐầu ra của tập lệnh tự động hóa
Tất cả những Bảng tính có cùng tháng, được phối hợp
Tóm lại, ví dụ này trình bày cách nhóm những Workbook trong cùng một thư mục thành một list theo ngày, sau đó gộp Worksheet của tất cả những Workbook trong cùng một list thành một Workbook
B. Copy bảng tài liệu của Sheet Excel này và dán vào phía dưới bảng tài liệu đã có của Sheet Excel khác
1. Kết hợp bảng tài liệu của hai Worksheet
Để đảm bảo chúng tôi chỉ sao chép bảng tài liệu, chúng tôi nên phải biết đúng chuẩn số lượng cột và hàng sẽ được sao chép. Do đó, hàm
# return Sheet with index = 1 without stating Sheet Namews_name = wb1.Sheets(1)7 sẽ được sử dụng để lấy số hàng. Trong ví dụ này, số cột được mã hóa cứng vì tác giả chưa tìm ra cách tốt hơn để trả về bảng vần âm của những cột ngoài việc sử dụng từ điển Python 😂
Các bước sao chép bảng tài liệu hơi khác so với sao chép cả Worksheet (ví dụ A1) là nên phải biết số hàng. Sự khác lạ đó đó là việc sử dụng những thư viện
# copy worksheet above from wb1 to wb2wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))0 để đọc kích thước của bảng tài liệu và Phương thức sao chép được sử dụng ở đây nằm trong Đối tượng phạm viimport win32com.client as win32
from pathlib import Path
win32c = win32.constants# create excel object
excel = win32.gencache.EnsureDispatch('Excel.Application')# excel can be visible or not
excel.Visible = True # False8
Ngoài ra, lưu ý rằng Phạm vi được chọn khởi đầu bằng Ô A2 khi sao chép bảng tài liệu
# open workbooksf_path = Path.cwd() # your path
f1_name="Penang 20190901.xlsx"
f2_name="Sabah 20190901.xlsx"
filename1 = f_path / f1_name
filename2 = f_path / f2_name
wb1 = excel.Workbooks.Open(filename1)
wb2 = excel.Workbooks.Open(filename2)
sheetname = "Penang_9"0
Điều này là vì số 1 tiên là hàng tiêu đề và cũng vì điều này, hàng ở đầu cuối là số hàng được trả về bởi
# return Sheet with index = 1 without stating Sheet Namews_name = wb1.Sheets(1)9. Nếu số hàng của tài liệu là 1000 hàng không gồm có hàng tiêu đề (_______80 trả về số hàng không tính đến tiêu đề), hàng ở đầu cuối sẽ là 1001
Sau đó để xác định vị trí dán tài liệu đã sao chép, tất cả chúng ta cần thêm 2 vào số hàng của bảng tài liệu trong Worksheet đích
# open workbooksf_path = Path.cwd() # your path
f1_name="Penang 20190901.xlsx"
f2_name="Sabah 20190901.xlsx"
filename1 = f_path / f1_name
filename2 = f_path / f2_name
wb1 = excel.Workbooks.Open(filename1)
wb2 = excel.Workbooks.Open(filename2)
sheetname = "Penang_9"1
Nếu trong Worksheet đích, số hàng của bảng tài liệu cũng là 1000 thì hàng ở đầu cuối cũng tiếp tục là 1001 sau khi đếm ở hàng tiêu đề. Do đó, vị trí để dán bảng tài liệu đã sao chép sẽ ở hàng thứ 1002
2. Kết hợp bảng tài liệu của nhiều Worksheet
Trong ví dụ này, tôi đã sử dụng tệp được tạo trong Phần A2. Tên tệp được khởi đầu bằng “Combined_Dated” và mỗi tệp có 5 Bảng tính bên trong, biểu thị bản ghi lợi nhuận cho 5 Quốc gia trong cùng một ngày như trong hình phía dưới
Đầu ra của tập lệnh tự động hóaĐầu ra của tập lệnh tự động hóaVì có nhiều Trang tính, tốt hơn là sử dụng chỉ mục Trang tính để xác định Trang tính, thay vì sử dụng tên Trang tính. Trong phần này, tất cả chúng ta sẽ sử dụng hai Thuộc tính đối tượng Excel phía dưới
# open workbooksf_path = Path.cwd() # your path
f1_name="Penang 20190901.xlsx"
f2_name="Sabah 20190901.xlsx"
filename1 = f_path / f1_name
filename2 = f_path / f2_name
wb1 = excel.Workbooks.Open(filename1)
wb2 = excel.Workbooks.Open(filename2)
sheetname = "Penang_9"2
Tương tự với 3 ví dụ còn sót lại, phần này cũng gồm 4 bước
i. Nhập thư viện
Trong ví dụ A2, Biểu thức chính quy (lại) được sử dụng để so sánh tên của Workbook. Trong ví dụ này, nó sẽ được dùng để so sánh tên những Worksheet
# open workbooksf_path = Path.cwd() # your path
f1_name="Penang 20190901.xlsx"
f2_name="Sabah 20190901.xlsx"
filename1 = f_path / f1_name
filename2 = f_path / f2_name
wb1 = excel.Workbooks.Open(filename1)
wb2 = excel.Workbooks.Open(filename2)
sheetname = "Penang_9"3
ii. Xác định hiệu suất cao để mở sổ thao tác
Hàm này dùng để mở Workbook và gọi hàm của
import reimport os
import win32com.client as win32
from pathlib import Path
win32c = win32.constants1 để so sánh những Worksheet giữa 2 Workbook và dán bảng tài liệu vào Worksheet có cùng tên State
Điều kiện IF-ELSE là để xác định xem có bất kỳ Sổ thao tác nào được mở không. Nó sẽ mở Workbook đầu tiên và lưu nó với tên
# copy worksheet above from wb1 to wb2wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))3 nếu không còn, nếu không nó sẽ mở Workbook thứ hai và lưu nó với tên # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))5. Khi đó, toàn bộ những bảng tài liệu trong những Worksheet ở # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))5 sẽ được copy sang # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))3 bằng hàm import re
import os
import win32com.client as win32
from pathlib import Path
win32c = win32.constants1. Phương thức Count ở đây sẽ được sử dụng để trả về số tờ trong # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))3. và giả sử # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))3 và # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))5 có cùng số sheet thì kết quả của Count sẽ được sử dụng để lấy tên Worksheet trong # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))5
Hàm
import reimport os
import win32com.client as win32
from pathlib import Path
win32c = win32.constants1 sẽ trả về # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))3 và # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))13 cho mọi vòng lặp trong FOR-LOOP bên phía ngoài. Điều này là vì mỗi lần sao chép-dán bảng tài liệu vào # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))3, tất cả chúng ta nên phải biết kích thước tiên tiến nhất của bảng tài liệu trong # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))3 được update để dán bảng tài liệu tiếp theo
iii. Xác định hàm để sao chép bảng tài liệu
Hàm này dùng để sao chép bảng tài liệu của tất cả những Worksheet từ Workbook này sang Workbook khác
Tôi biết ngữ cảnh trên trông đáng sợ, nhưng đừng lo, tôi sẽ nắm tay bạn đi hết hành trình dài thấu hiểu😉
Có hai FOR-LOOP và hai điều kiện IF-ELSE trong tập lệnh trên. Hãy để tôi lý giải từng cái một
1. FOR-LOOP
# open workbooksf_path = Path.cwd() # your path
f1_name="Penang 20190901.xlsx"
f2_name="Sabah 20190901.xlsx"
filename1 = f_path / f1_name
filename2 = f_path / f2_name
wb1 = excel.Workbooks.Open(filename1)
wb2 = excel.Workbooks.Open(filename2)
sheetname = "Penang_9"4
Vì chúng tôi đang sao chép nhiều Trang tính từ sổ thao tác này sang Sổ thao tác khác, trước tiên chúng tôi sẽ sử dụng thuộc tính Chỉ mục để chọn một Trang tính trong Sổ thao tác 1 (wb1), sau đó sử dụng thuộc tính Tên để xác định Trang tính trong Sổ thao tác 2 (wb2) có cùng tên Trạng thái
Trong FOR-LOOP bên phía ngoài, Tập lệnh phía dưới là lấy tên của Trang tính có Chỉ mục hiện tại trong wb1. Biểu thức chính quy sẽ được sử dụng để lấy tên Bang
# open workbooksf_path = Path.cwd() # your path
f1_name="Penang 20190901.xlsx"
f2_name="Sabah 20190901.xlsx"
filename1 = f_path / f1_name
filename2 = f_path / f2_name
wb1 = excel.Workbooks.Open(filename1)
wb2 = excel.Workbooks.Open(filename2)
sheetname = "Penang_9"5
Khi chúng tôi có một trong những tên Trang tính từ wb1, chúng tôi sẽ so sánh nó với list tên của những Trang tính trong wb2. Có FOR-LOOP bên trong. Danh sách tên những Worksheet trong wb2 đã được lưu trong
# copy worksheet above from wb1 to wb2wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))17
Trong FOR-LOOP bên trong, tên Trạng thái cho mọi Trang tính trong Sổ thao tác 2 sẽ nhận được với Biểu thức chính quy như được hiển thị trong tập lệnh phía dưới
# open workbooksf_path = Path.cwd() # your path
f1_name="Penang 20190901.xlsx"
f2_name="Sabah 20190901.xlsx"
filename1 = f_path / f1_name
filename2 = f_path / f2_name
wb1 = excel.Workbooks.Open(filename1)
wb2 = excel.Workbooks.Open(filename2)
sheetname = "Penang_9"6
Sau đó, điều kiện IF-ELSE được sử dụng để so sánh tên Trạng thái của Trang tính được chọn hiện tại trong Sổ thao tác một với tên Trạng thái cho mọi Trang tính trong Sổ thao tác 2
2. NẾU KHÁC
# open workbooksf_path = Path.cwd() # your path
f1_name="Penang 20190901.xlsx"
f2_name="Sabah 20190901.xlsx"
filename1 = f_path / f1_name
filename2 = f_path / f2_name
wb1 = excel.Workbooks.Open(filename1)
wb2 = excel.Workbooks.Open(filename2)
sheetname = "Penang_9"7
Điều kiện IF-ELSE bên phía ngoài là so sánh tên Trạng thái trong tên Bảng tính từ hai Sổ thao tác đang mở. Nếu tên Bang bằng nhau, thì tất cả chúng ta sẽ nhập IF-ELSE bên trong
Trong IF_ELSE bên trong, nếu
# copy worksheet above from wb1 to wb2wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))13 trống, điều này nghĩa là FOR-LOOP bên phía ngoài điều kiện IF-ELSE này mới khởi đầu, chưa tồn tại bảng tài liệu nào được sao chép. Ở quá trình này, chúng tôi sẽ sử dụng # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))19 của # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))3 ban đầu. Nếu không, chúng tôi sẽ sử dụng # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))13 từ # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))3 đã xử lý
Sau đó, chúng tôi sẽ sử dụng hàm
# copy worksheet above from wb1 to wb2wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))33 để lấy hình dạng của bảng tài liệu trong # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))3 và # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))5 hiện tại và sử dụng kết quả trong Phương thức sao chép, để dán bảng tài liệu vào vị trí đúng chuẩn
Bảng tài liệu trong Trang tính trong Sổ thao tác 2, được tìm thấy có cùng tên Trạng thái với Trang tính được chọn hiện tại trong Sổ thao tác 1, sẽ được sao chép vào Trang tính được chọn hiện tại trong Sổ thao tác 1
3. Sau khi tất cả những vòng lặp được hoàn thành xong
# open workbooksf_path = Path.cwd() # your path
f1_name="Penang 20190901.xlsx"
f2_name="Sabah 20190901.xlsx"
filename1 = f_path / f1_name
filename2 = f_path / f2_name
wb1 = excel.Workbooks.Open(filename1)
wb2 = excel.Workbooks.Open(filename2)
sheetname = "Penang_9"8
Vì có nhiều Sổ thao tác, Sổ thao tác 1 phải được lưu mọi khi kết phù phù hợp với Sổ thao tác khác, để gấu trúc hoàn toàn có thể đọc hình dạng của Khung tài liệu tiên tiến nhất và tính toán đích đúng chuẩn để dán bảng tài liệu.
# copy worksheet above from wb1 to wb2wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))3 và # copy worksheet above from wb1 to wb2
wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))13 cũng cần phải được trả về hiệu suất cao chính cho vòng lặp tiếp theo
Khi Workbook được lưu lại, sẽ có một hiên chạy cửa số bật ra hỏi có lưu trên Workbook hiện có hay là không, chỉ việc nhấp vào có 😁
iv. Gọi hiệu suất cao chính
# open workbooksf_path = Path.cwd() # your path
f1_name="Penang 20190901.xlsx"
f2_name="Sabah 20190901.xlsx"
filename1 = f_path / f1_name
filename2 = f_path / f2_name
wb1 = excel.Workbooks.Open(filename1)
wb2 = excel.Workbooks.Open(filename2)
sheetname = "Penang_9"9
Ví dụ này đã sử dụng đầu ra từ ví dụ B2. Vì những Worksheet trong Workbook được đặt tên theo một định dạng, định dạng này tất cả chúng ta hoàn toàn có thể phối hợp những tệp theo Trạng thái. Sổ thao tác phối hợp ở đầu cuối được lưu trong thư mục mang tên “Bảng tài liệu phối hợp”. Cả hai thư mục được đặt trong cùng một thư mục
Đầu ra của Tập lệnh tự động hóaĐầu ra của Tập lệnh tự động hóaTóm lại, ví dụ này chỉ ra cách nối những Worksheet từ những Workbook rất khác nhau trong cùng một thư mục thành một Workbook duy nhất theo tên của Worksheet. Ban đầu, mỗi Workbook chỉ có tài liệu trong một tháng. Sau khi gộp chúng lại, Workbook ở đầu cuối sẽ có tài liệu của 5 tháng
Đó là tất cả cho hướng dẫn tự động phối hợp Worksheet từ nhiều Workbook. Cảm ơn vì đã đọc đến cuối
Giữ liên lạcĐăng ký trên YouTube
Ghi chú bên lềTrong Tự động hóa Excel với Python, tôi đã lý giải về Đối tượng, Phương thức và Thuộc tính của Excel VBA. Đây là 3 khái niệm chính bạn sẽ phải biết để sử dụng
# copy worksheet above from wb1 to wb2wb1.Worksheets(sheetname).Copy(Before=wb2.Sheets(1))38
Nếu bạn quan tâm đến việc tự động hóa Bảng Pivot và trích xuất tài liệu đã lọc từ Bảng Pivot sang DataFrame của gấu trúc, tại đây, bạn hoàn toàn có thể Tự động hóa Bảng Pivot bằng Python (Tạo, Lọc và Trích xuất)
Nếu việc làm của bạn sử dụng Google Trang tính thay vì Microsoft Excel, bạn hoàn toàn có thể tham khảo nội dung bài viết này, “Tự động báo cáo Google Trang tính” để hoàn toàn có thể thực hiện tự động hóa
Post a Comment