Tất cả các bạn chắc hẳn đã từng làm việc với Excel vào một lúc nào đó trong đời và chắc hẳn đã cảm thấy cần phải tự động hóa một số tác vụ lặp đi lặp lại hoặc tẻ nhạt. Đừng lo lắng trong hướng dẫn này, chúng ta sẽ tìm hiểu về cách làm việc với Excel bằng Python hoặc tự động hóa Excel bằng Python. Chúng tôi sẽ trình bày vấn đề này với sự trợ giúp của mô-đun Openpyxl
Bắt đầu
Openpyxl là một thư viện Python cung cấp nhiều phương thức khác nhau để tương tác với Tệp Excel bằng Python. Nó cho phép các hoạt động như đọc, viết, phép toán số học, vẽ đồ thị, v.v.
Mô-đun này không được tích hợp sẵn với Python. Để cài đặt loại này, lệnh dưới đây trong thiết bị đầu cuối
pip install openpyxlĐọc từ bảng tính
Để đọc tệp Excel, bạn phải mở bảng tính bằng phương thức load_workbook(). Sau đó, bạn có thể sử dụng kích hoạt để chọn trang tính đầu tiên có sẵn và thuộc tính ô để chọn ô bằng cách chuyển tham số hàng và cột. Thuộc tính giá trị in giá trị của ô cụ thể. Xem ví dụ bên dưới để hiểu rõ hơn.
Ghi chú. Số nguyên của hàng hoặc cột đầu tiên là 1, không phải 0
Tập dữ liệu được sử dụng. Nó có thể được tải về từ đây
Ví dụ
Python3
Name27
Name28
Name29
Name30 Name31
Name28
Name0
Name1Name2 Name3
Name28
Name5
Name6
Name7____12 Name9
Name28
Name01
Name02
________ 103 ________ 12 ________ 105
Name28
Name07
Name08
Name09
Name28
Name81
Name82
Name28
Name84
Name85
Name86Name2 Name88Name2 Name270Name271Name2 Name270Name274
Name28
Name276
Name277
_______4278____4279
đầu ra
NameĐọc từ nhiều ô
Có thể có hai cách đọc từ nhiều ô.
Phương pháp 1. Chúng ta có thể lấy tổng số hàng và cột bằng cách sử dụng max_row và max_column tương ứng. Chúng ta có thể sử dụng các giá trị này bên trong vòng lặp for để lấy giá trị của hàng hoặc cột mong muốn hoặc bất kỳ ô nào tùy thuộc vào tình huống. Hãy xem cách lấy giá trị của cột đầu tiên và hàng đầu tiên
Ví dụ
Python3
Name27
Name28
Name29
Name30 Name31
Name28
Name0
Name1Name2 Name3
Name28
Name5
Name6
Name7____12 Name9
Name28
Name01
Name02
________ 103 ________ 12 ________ 105
Name28
Name303
Name304
Name305Name2 Name307
Name308Name2 Name310
Name28
Name278Name313Name314Name315
Name278Name313Name318Name319
Name28
Name281
Name282
Name283
_______4278____4313____4286Name287
Name288 Name289Name00 Name01Name313Name270Name04Name05 Name270Name07
Name08Name86Name2 Name88Name2 Name13Name2 Name270Name274
_______108____4278____4279
Name20
Name281
Name282
Name23
Name278Name313Name26Name287
Name288 Name289Name00 Name01Name313Name270Name271Name05 Name270Name07
Name08Name86Name2 Name88Name2 Name43Name271Name2 Name46
Name08Name278Name49Name2 Name51Name287
đầu ra
Name0Phương pháp 2. Chúng ta cũng có thể đọc từ nhiều ô bằng cách sử dụng tên ô. Đây có thể được coi là danh sách cắt của Python
Python3
Name27
Name28
Name29
Name30 Name31
Name28
Name0
Name1Name2 Name3
Name28
Name5
Name6
Name7____12 Name9
Name28
Name01
Name02
________ 103 ________ 12 ________ 105
Name28
Name84
Name85
Name86Name2 Name80Name81Name82Name83Name84
Name28
Name276
Name277
________ 4288 ________ 189 ________ 100 ________ 191
Name08Name278Name94
đầu ra
Name8Tham khảo bài viết dưới đây để biết thông tin chi tiết về cách đọc file excel bằng openpyxl
- Đọc tệp excel bằng mô-đun Python openpyxl
Viết vào bảng tính
Trước tiên, hãy tạo một bảng tính mới, sau đó chúng tôi sẽ ghi một số dữ liệu vào tệp mới tạo. Một bảng tính trống có thể được tạo bằng phương thức Workbook(). Hãy xem ví dụ dưới đây
Ví dụ
Python3
Name95 Name96Name30 Name98
Name28
Name000
Name001
________ 1002 _______ 12 ________ 1004
Name28
Name006
Name007
Name008
Name009
Name010Name2____1012Name287
đầu ra
Sau khi tạo một tệp trống, hãy xem cách thêm một số dữ liệu vào tệp đó bằng Python. Để thêm dữ liệu, trước tiên chúng ta cần chọn trang tính đang hoạt động, sau đó sử dụng phương thức cell(), chúng ta có thể chọn bất kỳ ô cụ thể nào bằng cách chuyển số hàng và cột làm tham số của nó. Chúng ta cũng có thể viết bằng cách sử dụng tên ô. Xem ví dụ dưới đây để hiểu rõ hơn
Ví dụ
Python3
Name29
Name30 Name31
Name28
Name018
Name001
Name020Name2 Name022
Name28
Name024
Name02
Name026Name2 Name028
Name28
Name030
Name08
Name09
Name28
Name034
Name035
Name036
Name037Name2 Name039Name2 Name270Name271Name2 Name270Name274
Name28
Name047
________ 1048 ________ 12 ________ 1050
Name28
Name052Name2 Name039Name2 Name270 Name271Name2 Name43Name274
________ 1061 ________ 12 ________ 1063
Name28
Name065
Name066
Name067
Name068Name2 Name070______1071Name072
________ 1073 ________ 12 ________ 1075
Name28
Name077
Name078Name2 Name070Name081Name072
________ 1083 ________ 12 ________ 1085
Name28
Name006
Name007
Name008
Name009
_______1091____1012____4274
đầu ra
Tham khảo bài viết dưới đây để biết thông tin chi tiết về cách viết excel
- Ghi vào tệp excel bằng mô-đun openpyxl
Thêm vào bảng tính
Trong ví dụ trên, bạn sẽ thấy rằng mỗi khi bạn cố gắng ghi vào bảng tính, dữ liệu hiện có sẽ bị ghi đè và tệp được lưu dưới dạng tệp mới. Điều này xảy ra vì phương thức Workbook() luôn tạo đối tượng tệp sổ làm việc mới. Để ghi vào sổ làm việc hiện có, bạn phải mở tệp bằng phương thức load_workbook(). Chúng tôi sẽ sử dụng sổ làm việc được tạo ở trên
Ví dụ
Python3
Name29
Name30 Name31
Name28
Name020Name2 Name800Name012Name274
Name28
Name026Name2 Name028
Name28
Name808Name2 Name070____1811Name072
Name813Name2 Name815
Name28
________ 1091 _______ 1012 ________ 4287
đầu ra
Chúng ta cũng có thể sử dụng phương thức append() để nối nhiều dữ liệu vào cuối trang tính
Ví dụ
Python3
Name29
Name30 Name31
Name28
Name020Name2 Name800Name012Name274
Name28
Name026Name2 Name028
Name28
Name834Name2 Name313
Name08Name313____4270Name840Name43Name840Name843Name844
Name08Name313____1847Name840Name849Name840Name851Name287
Name287
Name28
________ 4288 ________ 4305 ________ 100 ________ 1858
Name08Name860
Name28
________ 1091 ________ 1863 ________ 4287
đầu ra
Phép toán số học trên bảng tính
Các phép tính số học có thể được thực hiện bằng cách nhập công thức vào một ô cụ thể của bảng tính. Ví dụ muốn tính tổng thì sử dụng công thức =Sum() của file excel
Ví dụ
Python3
Name29
Name30 Name31
Name28
Name018
Name001
Name020Name2 Name022
Name28
Name024
Name876
Name026Name2 Name028
Name28
Name881
Name070Name81Name84Name2 Name886
Name070Name071____184Name2 Name891
Name070Name811Name84Name2 Name896
Name070Name898Name84Name2 Name2701
Name070Name2703Name84Name2 Name2706
Name28
Name2708
Name2709
Name070Name2711Name84Name2 Name2714
Name28
Name2716
_______1091____42718____4274
đầu ra
Tham khảo bài viết dưới đây để biết thông tin chi tiết về các phép toán Số học trên Bảng tính
- Các phép toán số học trong tệp excel bằng openpyxl
Điều chỉnh hàng và cột
Các đối tượng trang tính có các thuộc tính row_dimensions và column_dimensions kiểm soát chiều cao của hàng và chiều rộng của cột. Row_dimensions và column_dimensions của trang tính là các giá trị giống như từ điển; . Trong row_dimensions, người ta có thể truy cập một trong các đối tượng bằng cách sử dụng số của hàng (trong trường hợp này là 1 hoặc 2). Trong column_dimensions, người ta có thể truy cập một trong các đối tượng bằng chữ cái của cột (trong trường hợp này là A hoặc B)
Ví dụ
Python3
Name29
Name30 Name31
Name28
Name018
Name001
Name020Name2 Name022
Name28
Name024
Name876
Name026Name2 Name028
Name28
Name2736
Name039Name2 Name270Name271Name2 Name270Name2743Name2 Name2745
Name28
Name039Name2 Name43____4271Name2 Name43Name2743Name2 Name2755
Name28
Name2757
Name2758Name270Name2760Name2 Name2762
Name28
Name2764
Name2765Name2766Name2767Name2 Name2769
Name28
Name2716
________ 1091 ________ 1863 ________ 4274
đầu ra
Hợp nhất các ô
Một vùng ô hình chữ nhật có thể được hợp nhất thành một ô duy nhất bằng phương thức trang tính merge_cells(). Đối số cho merge_cells() là một chuỗi gồm các ô trên cùng bên trái và dưới cùng bên phải của vùng hình chữ nhật sẽ được hợp nhất
Ví dụ
Python3
Name30 Name31
Name020Name2 Name022
Name026Name2 Name028
Name28
Name2784
Name2785
Name2786
_______42787____42788____4274
Name28
Name039Name2 Name43____4271Name2 Name270Name2743Name2 Name2799
Name28
Name2801
Name2787____42803______4274
Name28
Name039Name2 Name851____4271Name2 Name851Name2743Name2 Name2814
Name28
________ 1091 ________ 1863 ________ 4287
đầu ra
Hợp nhất các ô
Để hủy hợp nhất các ô, hãy gọi phương thức trang tính unmerge_cells()
Ví dụ
Python3
Name30 Name31
Name28
Name28
Name020Name2 Name800Name863Name274
Name026Name2 Name028
Name28
Name2832
_______42833____42788____4274
Name28
_______42833____42803____4274
Name28
________ 1091 ________ 1863 ________ 4287
đầu ra
Đặt kiểu phông chữ
Để tùy chỉnh kiểu phông chữ trong các ô, quan trọng, hãy nhập hàm Font() từ openpyxl. mô-đun phong cách
Ví dụ
Python3
Name30 Name31
Name28
Name2847
Name95 Name2849____430 Name2851
Name28
Name28
Name020Name2 Name022
Name026Name2 Name028
Name28
Name039Name2 Name270Name271Name2 Name270Name2743Name2 Name2869
Name28
Name2871
Name039Name2 Name270Name271Name2 Name270______42878Name2 Name2880Name2 Name2882 Name274
Name28
Name039Name2 Name43____4271Name2 Name43Name2743Name2 Name2869
Name28
Name2895
Name039Name2 Name43_______4271Name2 Name43____42878Name2 Name2880Name2 Name2882Name2907Name2 Name2909Name274
Name28
Name039Name2 Name843Name271Name2 Name843______42743Name2 Name2869
Name28
Name2922
Name039Name2 Name843Name271Name2 Name843______42878Name2 Name2880Name2 Name2882Name2934Name2 Name2909Name274
Name28
Name039Name2 Name847Name271Name2 Name847Name2743Name2 Name2869
Name28
Name2949
Name039Name2 Name847Name271Name2 Name847______42878Name2 Name2880Name2 Name2882Name2961Name2 Name2963Name274
Name28
________ 1091 ________ 1863 ________ 4274
đầu ra
Tham khảo bài viết dưới đây để biết thông tin chi tiết về điều chỉnh hàng và cột
- Điều chỉnh các hàng và cột của tệp excel bằng mô-đun openpyxl
vẽ biểu đồ
Biểu đồ bao gồm ít nhất một chuỗi một hoặc nhiều điểm dữ liệu. Bản thân chuỗi bao gồm các tham chiếu đến phạm vi ô. Để vẽ biểu đồ trên trang tính excel, trước tiên, hãy tạo các đối tượng biểu đồ của lớp biểu đồ cụ thể ( i. e Biểu đồ thanh, Biểu đồ đường, v.v. ). Sau khi tạo các đối tượng biểu đồ, hãy chèn dữ liệu vào đó và cuối cùng, thêm đối tượng biểu đồ đó vào đối tượng trang tính
ví dụ 1
Python3
Name2969
Name30 Name96
Name28
Name2973
________ 195 ________ 42975 ________ 430 ________ 42977
Name28
Name2979
Name2980
Name020Name2 Name2983
Name28
Name2985
Name2986
Name026Name2 Name2989
Name28
Name2991
Name288 Name289Name00 Name01Name313Name2997____42998
Name08Name3000
Name28
Name3002
Name3003Name2 Name3005Name2______4270Name3008Name2Name270Name840
Name3012Name3013Name2Name270Name3016Name2Name2997Name287
Name28
Name3021
Name3022Name2 Name3024
Name28
Name3026
Name3027
Name28
Name3029
Name3030Name2 Name3032
Name28
Name3034
Name3035Name2 Name3037
Name28
Name3039
Name3040Name2 Name3042
Name28
Name3044
Name3045
Name3046
_______43047____43048____4287
Name28
Name3051
________ 1091 _______ 1012 ________ 4287
đầu ra
ví dụ 2
Python3
Name2969
Name30 Name96
Name28
Name3059
________ 195 ________ 42975 ________ 430 ________ 43063
Name28
Name020Name2 Name2983
Name026Name2 Name2989
Name28
Name2991
Name288 Name289Name00 Name01Name313Name2997____42998
Name08Name3000
Name28
Name3003Name2 Name3005Name2______4270Name3008Name2Name270Name840
Name3012Name3013Name2Name270Name3016Name2Name2997Name287
Name28
Name3101
Name3022Name2 Name3104
Name28
Name3027
Name28
Name3029
Name3030Name2 Name3111
Name28
Name3034
Name3035Name2 Name3116
Name28
Name3039
Name3040Name2 Name3121
Name28
Name3044
Name3045
Name3046
_______43047____43048____4287
Name28
Name3051
________ 1091 _______ 1012 ________ 4287
đầu ra
Tham khảo các bài viết dưới đây để biết thông tin chi tiết về vẽ đồ thị trong excel bằng Python
- Vẽ biểu đồ trong bảng excel bằng mô-đun openpyxl. Hiệp 1
- Vẽ biểu đồ trong bảng excel bằng mô-đun openpyxl. Đặt 2
- Vẽ biểu đồ trong bảng excel bằng mô-đun openpyxl. bộ 3
Thêm hình ảnh
Với mục đích nhập hình ảnh bên trong trang tính của chúng tôi, chúng tôi sẽ sử dụng openpyxl. vẽ. hình ảnh. Hình ảnh. Phương pháp này là một trình bao bọc trên PIL. Phương pháp hình ảnh được tìm thấy trong thư viện PIL (gối). Do đó, cần phải cài đặt thư viện PIL (gối) để sử dụng phương pháp này
Hình ảnh được sử dụng
Ví dụ
Python3
Name30 Name31
Name95 Name3137______430 Name3139
Name28
Name020Name2 Name022
Name28
Name026Name2 Name2989
Name28
Name3149
Name3150
Name3151Name2997Name840Name3154Name840Name3156Name840Name847Name840Name3160Name3161