Công thức Excel trong Python openpyxl

Đôi khi chúng tôi muốn sử dụng Python để đọc công thức Excel thay vì các giá trị và thư viện openpyxl cung cấp một cách để thực hiện điều đó một cách dễ dàng

Tại sao chúng ta cần đọc công thức?

Thư viện

openpyxl là thư viện Python của bên thứ ba để hoạt động với các tệp Excel. Chúng tôi có thể tải xuống bằng cách sử dụng pip. Mở một dấu nhắc lệnh, sau đó gõ như sau. Nếu bạn đã có gấu trúc, có khả năng openpyxl đã được cài đặt

pip install openpyxl

Tệp Excel mẫu

Chúng tôi sẽ sử dụng một tệp Excel đơn giản cho hình minh họa này nên không cần tải xuống. Xem ảnh chụp màn hình bên dưới

Python đọc công thức Excel từ bảng tính

There are three formulas on the tab in cell B2, B4, and D2. Let’s use openpyxl to read the Excel sheet into Python:

import openpyxl
wb = openpyxl.load_workbook['Book1.xlsx']
ws = wb['formula']


ws['B2'].data_type
'f'

ws['B2'].value
'=PI[]'

Kiểm tra kiểu_dữ_liệu của ô B2, ta nhận được ‘f’ có nghĩa là ô này chứa công thức. Lưu ý. thuộc tính giá trị trả về công thức Excel thực tế, đó là '=PI[]'. Cũng lưu ý rằng "giá trị" của ô công thức thực sự là một kiểu dữ liệu Chuỗi trong Python

Điều này thật tuyệt, nhưng nếu bảng tính của chúng ta có nhiều công thức và thay vào đó chúng ta muốn giá trị thực thì sao?

Python đọc tệp Excel dưới dạng chỉ giá trị

openpyxl. phương thức load_work[] có đối số tùy chọn data_only được đặt thành Sai theo mặc định. Chúng tôi có thể bật tính năng này bằng cách đặt thành True, sau đó chúng tôi sẽ chỉ nhận được các giá trị thay vì công thức

Lưu ý mã bên dưới, lần này data_type hiển thị 'n' có nghĩa là một số. Và thực sự chúng tôi đã nhận được giá trị của Pi, đó là 3. 14159…

Trong bài viết trước, chúng ta đã thảo luận tổng quan về thư viện và “các thao tác cơ bản” như tạo và lưu sổ làm việc mới. Sau đó, chúng tôi đã giải thích “các đối tượng chính và cấu trúc lớp của chúng”, phải được hiểu rõ khi sử dụng openpyxl

Bài viết trước có thể được tìm thấy ở đây

Chúng tôi đã bỏ qua nội dung trùng lặp và khuyến khích bạn đọc nó

【Python×Excel】Cách sử dụng cơ bản của "openpy-xl" [Cài đặt ~ Sách, Trang tính, Ô]

Đây là giải thích minh họa về openpyxl, một thư viện để thao tác Excel trong Python. Từ cách cài đặt thư viện cho đến "tạo Workbook/Worksheet mới" và "thao tác với hàng, cột, ô" đều được cô đọng trong một bài viết này

www. hoa shibutan. com

2022. 03. 05

Ngoài ra, vui lòng tham khảo toàn bộ nội dung của loạt bài này [ Python x Excel ] như được hiển thị tại đây.

Hình1. Danh sách nội dung của sê-ri [Python x Excel]

Trong phần thứ hai của loạt bài này, chúng tôi sẽ giải thích sâu hơn về các hoạt động của ô [đối tượng Ô]

Mục đích của việc sử dụng phần mềm bảng tính “Excel” là áp dụng các quy trình khác nhau cho “dữ liệu được nhập vào ô” và tóm tắt chúng trong “biểu đồ phân tích và thống kê“

Nói cách khác, “ Excel work ” = “ thao tác trên ô“.

Phần này giải thích cách “lấy” và “xử lý” các giá trị ô với các ví dụ cụ thể

Hãy đồng hành cùng chúng tôi cho đến hết bài viết này vì bạn sẽ có thể “ làm và hiểu ” những điều sau

Những gì bạn có thể tìm hiểu trong bài viết này

  • Cách thêm một ô [đối tượng Ô] và phạm vi hợp lệ của nó
  • Lấy một ô [Đối tượng ô] và đặt giá trị của nó
  • Giới thiệu về hợp nhất ô, chèn công thức và xác định phạm vi ô

Thông tin được trình bày trên trang web này chỉ là một ví dụ. Vui lòng tham khảo trang web chính thức để biết chi tiết và làm rõ, nếu cần

【Tài liệu chính thức】https. //openpyxl. đọcthedocs. io/vi/ổn định/

Bây giờ chúng ta sẽ tiến hành chi tiết trong phần tiếp theo về cách thao tác với đối tượng Cell một cách cụ thể

nội dung

  • 1. Lấy ô [CellObject]
    • 1. 1 Thêm [Lấy] đối tượng ô
      • 1. 1. 1 Thêm một ô [Đối tượng ô]
      • 1. 1. 2 Thêm nhiều ô [Đối tượng ô]
      • 1. 1. 3 Phạm vi hợp lệ của đối tượng ô
      • 1. 1. 4 Lấy đối tượng ô
  • 2. Thao tác với các ô [Đối tượng ô]
    • 2. 1 Đặt giá trị trong ô
    • 2. 2 Đặt công thức trong ô
    • 2. 3 Hợp nhất nhiều ô
    • 2. 4 Phạm vi tên của các ô
  • 3. TÓM LƯỢC

スポンサーリンク

1. Lấy ô [CellObject]

Ô là đơn vị cơ bản của công việc Excel. Do đó, Đối tượng ô cung cấp nhiều đối tượng, phương thức và thuộc tính [thuộc tính] liên quan đến hoạt động của ô. Lập trình viên cần hiểu và sử dụng thành thạo.

Phần này cung cấp giải thích sâu hơn về các thao tác trên đối tượng Ô, bao gồm “ Thêm và lấy đối tượng ,” “ Getting Data,” “Setting Formulas,” and “Defining and Managing Cell Ranges“.

1. 1 Thêm [Lấy] đối tượng ô

Như đã nói ở trên, xử lý dữ liệu trong Excel có thể nói là thao tác trên đối tượng Cell. Đối với workbook mới tạo chưa có đối tượng Cell nên phải “thêm và lấy”

Ngoài ra, nếu bạn đang đọc và chỉnh sửa một sổ làm việc hiện có có chứa một số nội dung, bạn có thể "lấy" các đối tượng Ô hiện có hoặc thậm chí "thêm và lấy" chúng

Hình2. Thêm và nhận các đối tượng Ô cho sổ làm việc hiện có và mới

các định dạng khác nhau có sẵn để thêm và truy xuất các đối tượng Ô

Có một số trùng lặp với bài viết trước, nhưng nó quan trọng, vì vậy tôi sẽ nhắc lại

1. 1. 1 Thêm một ô [Đối tượng ô]

Đầu tiên, chúng ta sẽ thảo luận về cách thêm một ô [đối tượng Ô]

Có hai loại định dạng. một chỉ định “địa chỉ ô ['A1', v.v…]” cho đối tượng Trang tính [ ] và một chỉ định sử dụng cell[] method [], as shown below.

Trong phương thức cell[], arg. hàng/cột chỉ định số hàng và cột của ô bổ sung. [Tiêu chí ô A1 “1” được giả định. ] Bạn cũng có thể đặt giá trị cho arg. giá trị .

Đối tượng di động [một]

. Đối tượng trang tính [cell_adr]

arg. cell_adr . Chỉ định theo phương thức địa chỉ ô ['A1′,'B2', v.v. ]

trả về. Đối tượng ô

. Đối tượng trang tính . ô[hàng, cột, val]

arg. hàng . Chỉ định số hàng [số nguyên] với ô A1 là “1

arg. cột . Chỉ định số cột [số nguyên] với ô A1 là “1” ※

arg. giá trị . Chỉ định giá trị [dữ liệu] sẽ được đặt trong ô [đối số tùy chọn]

[※ Lưu ý rằng chỉ định tên cột 'A', 'B', v.v. sẽ dẫn đến một lỗi. ]

trả về. Đối tượng ô

SAMPLE[1]

hiển thị một chương trình ví dụ. [ A ] là “địa chỉ ô” và [ B ] là thêm . Nó được xác nhận rằng giá trị có thể được thiết lập với giá trị đối số.

from openpyxl import Workbook

wb=Workbook[]  
ws=wb.active

# [A] ------------------------------------------------------------------
# By specifying the index of the Worksheet object
# Adding Cell Objects and Setting Values

ws['B4']
print[ws['B4']]        # >> Add Cell object
print[ws['B4'].value]  # >>None Default value is none.

ws['B4']=4            # Set value in 'B4' cell [without value property]
print[ws['B4'].value] # >>4 Confirm value [4] in 'B4' cell

ws['B5'].value=5      # Set a value in 'B5' cell [with value property]
print[ws['B5'].value] # >>5 Confirm value [5] in 'B5' cell


# [B] ------------------------------------------------------------------
# by the cell[] method of the Worksheet object.
# Obtaining a Cell object and setting its value

ws.cell[row=4, column=2].value=10        # Setting values by named argument specification・value property
print[ws.cell[row=4, column=2].value]    # >>10 Check cell values 

ws.cell[row=4, column=3, value=20]       # The argument value can be used to set the cell value at the same time.
print[ws.cell[row=4, column=3].value]    # >>20 Check cell values 

ws.cell[4, 4, 30]                        # There is no problem with sequential arguments, of course.
print[ws.cell[4, 4, 30].value]           # >>30 Check cell values 

1. 1. 2 Thêm nhiều ô [Đối tượng ô]

Nhiều ô có thể được thêm vào cùng một lúc

Thêm nhiều đối tượng Ô bằng cách chỉ định một phạm vi ô [theo hàng, theo cột hoặc cả hai]

Định dạng là “Dải địa chỉ ô [“A1. C3”, “A1”. “C3″, v.v. ]” cho đối tượng Worksheet như sau ] [ ] và các phương thức chuyên dụng như append[] iter_rows[]/iter_cols[]. [②➂ ], tương ứng. Định dạng như sau.

Đối tượng ô [Đa]

. Đối tượng trang tính [range_adr]

arg. range_adr . Chỉ định một dải ô theo địa chỉ [“A1“. “C3” hoặc “A1. C3“]

trả về. Đối tượng hàng Trình tạo [bộ đối tượng Ô]

➁. Đối tượng trang tính . nối thêm[row_data]

arg. row_data . Một danh sách có các phần tử là giá trị của các ô trong một hàng

trở lại. Không có

-1. Đối tượng trang tính . iter_rows[min_row, max_row, min_col, max_col]

-2. Đối tượng trang tính . iter_cols[min_row, max_row, min_col, max_col]

arg. min_row . Hàng để bắt đầu lặp lại Tất cả những điều sau đây là đối số tùy chọn

arg. max_row . Hàng để kết thúc vòng lặp

arg. min_col . Cột để bắt đầu lặp lại

arg. max_col . Cột để kết thúc vòng lặp

trả về. Đối tượng Hàng/Cột Trình tạo [bộ đối tượng Ô]

Phương thức append[] lấy danh sách các giá trị ô trong một hàng làm đối số và dữ liệu được thêm vào hàng cuối cùng .

Phương thức iter_rows[]/cols[] thêm đối tượng bằng cách chỉ định phạm vi ô có số hàng [bắt đầu, kết thúc] và cột . Giá trị trả về là một bộ [trình tạo] có các phần tử là các đối tượng Row nếu phương thức iter_rows[].

Sau đây là tóm tắt các hướng dẫn sử dụng cả hai phương pháp

. Để thêm một đối tượng Ô từ một vị trí tùy ý, chỉ định một dải ô

 → “ Xử lý phạm vi ô ” hoặc “ phương thức iter_rows[] / iter_cols[]>[[, , … , ]] # [B]------------------------------------------------------------------ # Adding a Cell object using the append[] method # Sets a value on the last line [no method return value] data = [1, 2, 3, 4] ws.append[data] # [C]------------------------------------------------------------------ # Adding Cell objects by iter_rows[] method # A generator of Row objects is generated. print[ws.iter_rows[min_row=6, max_row=7, min_col=3, max_col=5]] # >> # [D]------------------------------------------------------------------ # Adding Cell objects by iter_cols[] method # Generator of Column object is generated print[ws.iter_cols[min_row=6, max_row=7, min_col=7, max_col=9]] # >> wb.save['Multi_Cell_gen.xlsx']

1. 1. 3 Phạm vi hợp lệ của đối tượng ô

Hãy cẩn thận khi thêm các đối tượng Cell

Đối tượng Cell được tự động tạo [thêm] với một ký tự null [trống] trong khoảng trống giữa tham chiếu “ô A1” và đối tượng Cell mới được thêm vào

Một ví dụ cụ thể được hiển thị bên dưới [Hình. 4], trong đó một đối tượng Cell được thêm vào “C3” bằng cách sử dụng phương thức cell[] [giá trị có thể được đặt hoặc không được đặt]. Sau đó, một Đối tượng ô có ký tự rỗng sẽ tự động được thêm vào các ô trống giữa các ô A1 và C3. Vấn đề là chúng [hoặc sẽ] được thêm tự động.

Hình4. Phạm vi hợp lệ của đối tượng Cell

Điều này cho phép truy cập vào tất cả các đối tượng Ô trên trang tính, bao gồm các ô trống khi thuộc tính hàng/cột [được mô tả trong phần tiếp theo] được thực thi

Mặc dù điều này thuận tiện nhưng khi các ô trống được sử dụng để xử lý dữ liệu, các lỗi không mong muốn thường xảy ra, vì vậy hãy xem xét các biện pháp như kiểm tra sự tồn tại của các giá trị ô và bao gồm xử lý ngoại lệ

1. 1. 4 Lấy đối tượng ô

Cho đến giờ, chúng ta đã giải thích cách thêm [lấy] một đối tượng Ô. Khi một đối tượng Ô được thêm một phương thức hoặc thuộc tính, nó có thể được nhận dưới dạng trả về cùng một lúc.

Vì vậy, phương pháp đơn giản để truy xuất một đối tượng Cell hiện có là gì?

Đương nhiên, C các đối tượng không tồn tại [chưa được thêm vào] không thể có được . Ví dụ: nếu bạn thực thi định dạng sau trên một đối tượng Workbook vừa được tạo, xin lưu ý rằng sẽ xảy ra “Lỗi chỉ mục”.

Đối tượng ô [Một ô]

. Đối tượng trang tính [row_index][col_index]

index1. row_index . Chỉ định số hàng [số nguyên] với ô A1 là “1

index2. col_index . AChỉ định số cột [số nguyên] với ô A1 là “0” ※

[※ Lưu ý rằng chỉ định tên cột 'A', 'B', v.v. sẽ dẫn đến một lỗi. ]

trả về. Đối tượng ô

. Đối tượng hàng [row_index]

chỉ mục. row_index . Chỉ định số hàng [số nguyên] với ô A1 là “0” ※

[※Lưu ý rằng đây là chỉ mục tuple, vì vậy nó bắt đầu bằng 0. ]

trả về. Đối tượng ô

. Đối tượng cột [col_index]

chỉ mục. col_index . Chỉ định số cột [số nguyên] với ô A1 là “0” ※

[※Lưu ý rằng đây là chỉ mục tuple, vì vậy nó bắt đầu bằng 0. ]

trả về. Đối tượng ô

Bạn có thể lấy một đối tượng Ô bằng cách chỉ định một chỉ mục trên đối tượng Trang tính như [ row_index ][ col_index].[ ]

Số hàng row_index dựa trên ô “A1” là “ 1 ” và số cột col_index dựa trên ô “A1” . 0“.

Tương tự, đơn vị ma trận [đối tượng Hàng/Cột] có thể được lập chỉ mục là [ chỉ mục ]. [ ②➂ ] Cả hai ma trận này đều được lập chỉ mục trong “ 0 ” .

Để biết thêm thông tin về các đối tượng Hàng/Cột, hãy xem các bài viết liên quan bên dưới

[Đối tượng hàng] [Đối tượng cột ví dụ về thực thi

スポンサーリンク

2. Thao tác với các ô [Đối tượng ô]

Bây giờ đối tượng Ô đã được thêm vào, bước tiếp theo là giải thích cách thao tác với ô

Phần này bao gồm “cài đặt và nhận giá trị [số, chuỗi và công thức] trong ô”, “hợp nhất ô” và “đặt tên và xác định phạm vi ô

2. 1 Đặt giá trị trong ô

Để đặt giá trị [số hoặc chuỗi] cho đối tượng Ô, hãy sử dụng thuộc tính giá trị .

Ngoài ra, phương thức cell[] của arg. giá trị .

Ngoài ra, các phần tử của danh sách được đặt làm đối số cho phương thức append[] có thể được đặt thành giá trị ô.

Mặt khác, các đối tượng Hàng/Cột/Phạm vi [phạm vi ô], nhóm nhiều ô, không cung cấp thuộc tính giá trị or similar functionality.

Do đó, không thể đặt giá trị cho nhiều ô cùng một lúc mà phải giải nén [tách] chúng thành các đối tượng Ô cấu thành riêng lẻ rồi áp dụng thuộc tính giá trị. [Fig.5]

Hình5. Đặt dữ liệu trong ô

SAMPLE[3]

Hãy xem một ví dụ cụ thể về việc sử dụng nó trong mã mẫu

[ A ]. Phạm vi ô [“A1. C3”] được mở rộng thành các hàng [Row objects]. Ngoài ra, câu lệnh For được lồng vào nhau để mở rộng đối tượng Hàng thành các đơn vị ô [đối tượng Ô], sau đó giá trị [1] được đặt bằng thuộc tính giá trị.

[ B ]. Thay vì sử dụng thuộc tính “giá trị”, hãy sử dụng phương thức append[] để nối thêm giá trị vào ô.

[ C ]. Sau khi phương thức iter_rows[] được sử dụng để tạo trình tạo từng hàng, nó giống như trong [A].

[ Đ ]. Sau khi phương thức iter_cols[] được sử dụng để tạo trình tạo mỗi cột, nó giống như trong [A].

from openpyxl import Workbook

wb=Workbook[]  
ws=wb.active

# 【A】------------------------------------------------------------------
# By specifying the index of the Worksheet object
# Adding Cell Objects and Setting Values

# Set cell values by breaking them down into individual cells
for row in ws["A1:C3"]:
    for cell in row:
        cell.value = 1


# 【B】------------------------------------------------------------------
# Adding a Cell object using the append[] method
# Sets a value on the last line [no method return value]

data = [1, 2, 3, 4]
ws.append[data]


# 【C】------------------------------------------------------------------
# Adding Cell objects by iter_rows[] method      

for row in ws.iter_rows[min_row=6, max_row=7, min_col=3, max_col=5]:
    print[row]
    # >>[, , ]
    # >>[, , ]
    
    # Set cell values by breaking them down into individual cells  
    for cell in row:
        cell.value = 'iter_rows'


# 【D】------------------------------------------------------------------
# Adding Cell objects by iter_cols[] method

for col in ws.iter_cols[min_row=6, max_row=7, min_col=7, max_col=9]:
    print[col]
    # >>[, ]
    # >>[, ]
    # >>[, ]
    
    # Set cell values by breaking them down into individual cells
    for cell in col:
        cell.value = 'iter_cols'

Kết quả chạy như sau

Hình6[[ A ]. xanh lục, [ B ]. đỏ, [ C , D ]. màu xanh da trời]

Hình6. Kết quả thực thi List3

2. 2 Đặt công thức trong ô

Bạn cũng có thể áp dụng các hàm Excel cho đối tượng Cell

Giống như các hàm Excel thông thường, hãy viết “= [dấu bằng]” theo sau là công thức tính toán [Toán tử]. Sau đó, kèm theo toàn bộ biểu thức, bao gồm dấu “=”, trong [dấu ngoặc kép] hoặc [single quotation marks].[If the expression contains a ” [double], enclose the entire expression in ‘ [single].]

Cuối cùng, đặt giá trị trực tiếp cho đối tượng Ô mà không thông qua thuộc tính giá trị .

[Nếu được đặt thành giá trị, nó được nhận dạng là một chuỗi. ]

Mẫu[4]

Hãy kiểm tra một ví dụ cụ thể với mã mẫu

Tham chiếu ô cũng hỗ trợ tham chiếu tuyệt đối [$]

from openpyxl import Workbook

wb=Workbook[]
ws=wb.active


# Apply an Excel function to a cell

# Enclose the formula in "[double quotation marks]
ws["A2"] = "=AVERAGE[C1:C5]"

# Enclose the formula in '[single quotation marks]
ws["A3"] = '=AVERAGE[C1:C5]'

# References can be absolute references.
ws["A4"] = "=AVERAGE[$C$1:$C$5]"

# If " [double quotation marks]is used in the formula,
# such as in a string, enclose the formula in '[single quotation marks]'.
ws["A1"] = '=IF[B1>=50,"50以上","50未満"]'


wb.save['formula.xlsx']

2. 3 Hợp nhất nhiều ô

Có thể dễ dàng kết hợp và hợp nhất nhiều ô thành một ô duy nhất. phương thức merge_cells[] của đối tượng Worksheet được sử dụng để hợp nhất và phương thức unmerge_cells[] is used for unmerging.

Đối số có thể là dải địa chỉ A1, chẳng hạn như 'B2. F4’, hoặc một số ma trận

phương thức merge_cells[]

< Hợp nhất Ô>

Đối tượng trang tính. merge_cells[range_string, start_row, start_column, end_row, end_column]

arg. dãy_chuỗi . Chỉ định phạm vi tham gia dưới dạng chuỗi phạm vi địa chỉ ô e. g. ] ‘A1. C3’ [tùy chọn]

arg. start_row . Số dòng để bắt đầu hợp nhất [tùy chọn]

arg. cột_bắt đầu . Số cột để bắt đầu hợp nhất

arg. end_row . Số dòng để kết thúc phép nối

arg. end_column . Số cột để kết thúc liên kết

< Hủy hợp nhất Ô>

Đối tượng trang tính . unmerge_cells[range_string, start_row, start_column, end_row, end_column]

Các đối số giống như đối với phương thức merge_cells

Khi áp dụng các giá trị hoặc định dạng cho các ô được hợp nhất, các cài đặt sẽ được áp dụng cho “ô trên cùng bên trái” của vùng được hợp nhất. Cố gắng truy cập bất kỳ ô nào khác sẽ dẫn đến lỗi

Ngoài ra, lưu ý rằng nếu bạn muốn áp dụng đường viền [Đối tượng đường viền※] xung quanh khu vực đã hợp nhất, bạn phải đặt riêng từng ô bên ngoài

[※How to apply ruled lines is explained in .]

SAMPLE[5]

Bây giờ, hãy kiểm tra nó bằng mã thực tế

Trong [ A ], phương thức merge_cels[] được sử dụng để hợp nhất dải địa chỉ ô [‘B2. F4’].

Lấy đối tượng Ô cho ô “B2” và đặt giá trị và căn chỉnh trong các thuộc tính. Nếu bạn truy cập vào một ô khác với ô “B2”, chẳng hạn như ô “C2” hoặc “D3”, sẽ xảy ra lỗi

Trong [ B ], số hàng và số cột của dải ô đã nối được chỉ định bởi điểm bắt đầu [ arg:start_row , arg. start_column ] và điểm kết thúc [ arg. end_row , arg. end_column ].

from openpyxl import Workbook
from openpyxl.styles import Alignment

wb = Workbook[]
ws = wb.active

#【A】-----------------------------------------------------------
# Merge multiple cells by merge_cells[] method [A1 address specified]
ws.merge_cells['B2:F4']

# Acquisition of the Cell object [B2] in the upper left corner of the merged cell area
top_left_cell = ws['B2']

# Decorate entire merged cell
# The entire combined cell is decorated by setting the style formatting on the top left Cell object [B2]
# Note that specifying cells other than the upper left, such as B3, C2, etc., will result in an error.
# Also, borders, etc., cannot be set at once, but must be set for each individual cell.

top_left_cell.value = "Merged Cell!"
top_left_cell.alignment = Alignment[horizontal="center", vertical="center"]

#【B】-----------------------------------------------------------
# Merge multiple cells by merge_cells[] method [specify number of matrices]
ws.merge_cells[start_row= 7, end_row=9, start_column=2, end_column=3]


wb.save['sample_Merged-Cell.xlsx']

Kết quả chạy như sau

Hình7. Kết quả thực hiện List5

2. 4 Phạm vi tên của các ô

Phạm vi ô cụ thể cũng có thể được đặt tên và quản lý trong sổ làm việc hoặc trang tính

Dải ô đã xác định được quản lý bởi một đối tượng DefinedName có thể nhận được ở định dạng sau

Lớp DefinedName[] có một số đối số tùy chọn, nhưng ít nhất là arg. name [tên để gán cho phạm vi ô [tên đã xác định]] và arg. attr_text [địa chỉ dải ô cần xác định] phải được đặt.

Lưu ý rằng arg. attr_text phải được chỉ định làm đối số được đặt tên.

Đối tượng tên xác định

< Tên xác định Đối tượng>

từ sổ làm việc nhập openpyxl . tên_xác định. Tên xác định[tên, attr_text]

[Có nhiều đối số tùy chọn khác giữa arg. tênarg. attr_text , chẳng hạn như nhận xét, mô tả, v.v. , được chỉ định với các đối số được đặt tên. ]

arg. tên . Tên định nghĩa để gán cho phạm vi ô

arg. attr_text . Phạm vi ô được xác định [ví dụ:. ‘Tờ1. $E$12. $G$14’]

trả về. Đối tượng tên xác định

< Danh sách tên xác định Đối tượng>

Đối tượng sổ làm việc . đã xác định tên thuộc tính

trả về. Đối tượng Danh sách tên được xác định

< Thêm Tên xác định Đối tượng>

Đối tượng Danh sách tên xác định . nối thêm[defn]

arg. defn . Đặt đối tượng DefinedName sẽ được thêm vào

< Nhận Tên xác định Đối tượng>

Đối tượng Danh sách tên xác định . defineName thuộc tính

trở lại. Danh sách các đối tượng DefinedName

Cũng có thể một phần tử cụ thể [đối tượng Tên xác định] theo chỉ mục

Một phạm vi ô đã xác định có thể chứa nhiều ô trong sổ làm việc. Chúng được nhóm thành các đối tượng [danh sách] DefinedNameList. Sử dụng phương thức append[] để thêm vào danh sách và thuộc tính defineName to retrieve the list. [Fig.8]

Hình8. Lấy và thêm một đối tượng DefinedName

SAMPLE[6]

Bây giờ hãy kiểm tra nó với mã thực tế

Phác thảo của mã là đọc một sổ làm việc, kiểm tra các thuộc tính của một phạm vi ô được xác định trước và thêm một định nghĩa mới

Các tập tin [. xlsx] được đọc bởi chương trình này có thể được tải xuống từ

sample_Defined_Names. xlsxTải xuống

from openpyxl import workbook
from openpyxl import load_workbook

wb=load_workbook['sample_Defined_Names.xlsx']

#[A]------------------------------------------------------------------------------
# Check object type
print[type[wb.defined_names]]                   # >>
print[type[wb.defined_names.definedName]]       # >>
print[type[wb.defined_names.definedName[0]]]    # >>


#[B]------------------------------------------------------------------------------
# Get the name of the defined cell range and the address of the region

for defined in wb.defined_names.definedName:
    print[defined.name]          # >> my_range1
    print[defined.attr_text]     # >> Sheet1!$C$6:$E$8
    
    # Numerous other attributes are available for the DefinedName object.
    # Comment, description, hidden … The default value for both attributes is 'None'.


#[C]------------------------------------------------------------------------------
# Add new cell range name definition

# Creation of DefinedName object
new_range=workbook.defined_name.DefinedName[name='new_range', attr_text='Sheet1!$E$12:$G$14']
print[type[new_range]]  # >>

# Newly defined in the append[] method of the DefinedNameList object
# Add cell range [DefinedName object]
wb.defined_names.append[new_range]


#[D]------------------------------------------------------------------------------
# Get the name of the defined cell range and the address of the region

for defined in wb.defined_names.definedName:
    print[defined.name]          # >> my_range1,          new_range
    print[defined.attr_text]     # >> Sheet1!$C$6:$E$8    Sheet1!$E$12:$G$14
    
    # The newly added cell range name [new_range] is output

wb.save['sample_Defined_Names.xlsx']

Bây giờ, hãy để tôi giải thích những điểm chính

Dòng 8~10:【Lấy đối tượng DefinedNameList】

Nhận một đối tượng DefinedNameList và trích xuất phần tử của nó đối tượng DefinedName. Since we are reading a book that contains one predefined cell range, we can retrieve the object at index “0“.

Dòng 16~18:【Nhận đối tượng Tên xác định】

Câu lệnh For mở rộng danh sách để lấy đối tượng DefinedName, thuộc tính name được sử dụng để lấy tên định nghĩa và attr_text property is used to obtain the cell range. In addition to the above, many other attributes are available.

Dòng 28,29,33:【Xác định phạm vi ô mới】

Tạo một thể hiện từ lớp DefinedName . [tên định nghĩa là “new_range”, phạm vi định nghĩa là “Sheet1. $E$12. $G$14”] rồi nối nó vào đối tượng DefinedNameList bằng phương thức append[] . và được quản lý trong toàn bộ sổ làm việc.

Kết quả chạy như sau, có thêm một dải ô mới [new_range]

Hình9. Kết quả thực hiện List6

スポンサーリンク

3. TÓM LƯỢC

Nó thế nào?

Trong bài viết này, chúng tôi đã đề cập đến thư viện “openpyxl” để thao tác trên Excel, tập trung vào cách xử lý các ô [đối tượng Cell]

Vì công việc với Excel về cơ bản được thực hiện thông qua các ô, chúng tôi hy vọng rằng bạn sẽ sử dụng các giải thích trong bài báo này

Cuối cùng, tôi sẽ tóm tắt nội dung của bài viết này

  • Điều kiện tiên quyết để thực hiện bất kỳ thao tác nào trên một ô là đối tượng Ô của ô đích đã được lấy. Nếu không có đối tượng Cell trong một cuốn sách mới, nó phải được thêm vào [lấy] bằng cách sử dụng phương thức cell[] hoặc tương tự
  • Các đối tượng ô có thể được thêm và truy xuất “trên một ô” hoặc “nhiều ô cùng nhau”, nhưng “trên một ô” phải được hỗ trợ khi thiết lập dữ liệu trong một ô hoặc định dạng nó
  • Bạn cũng có thể “đặt công thức [hàm Excel]”, “hợp nhất“ và “xác định tên cho phạm vi ô” trong các ô

Bây giờ, trong số tiếp theo, chúng ta sẽ đề cập đến “ định dạng ô “. Định dạng ô cho phép bạn làm cho chúng trông đẹp hơn bằng phông chữ, tô màu, trang trí, v.v.

Chúng tôi hy vọng bạn sẽ thấy bài viết sau hữu ích. Liên kết sẽ ở đây. ↓

【Python×Excel】Định dạng ô [Phông chữ, Điền, Đường viền] trong "openpyxl"

Thư viện openpyxl cho phép bạn áp dụng các cài đặt định dạng [kiểu] như phông chữ, đường viền và đường viền cho các ô. Mỗi định dạng được xác định và quản lý bởi một đối tượng chuyên dụng. Các thông số kỹ thuật chi tiết của các lớp và hình ảnh minh họa sẽ được cung cấp

Bạn có thể sử dụng các công thức Excel trong Python không?

Sử dụng hàm Excel . Trong cột mới, bạn có thể sử dụng các hàm giống như Excel bình thường và Mito sẽ tạo mã Python tương đương. Khi bạn bắt đầu nhập chức năng của mình, một danh sách đề xuất các chức năng có thể để chọn sẽ xuất hiện trong menu bên dưới. Within the cells of the new column, you can assign a formula. In the new column, you can use normal Excel-like functions and Mito will generate the equivalent Python code. As you begin to type your function, a suggestion list of possible functions to choose from will populate a menu below.

Openpyxl có thể viết XLS không?

openpyxl là một thư viện Python để đọc/ghi các tệp Excel 2010 xlsx/xlsm/xltx/xltm . Nó được sinh ra từ việc thiếu thư viện hiện có để đọc/ghi nguyên bản từ Python định dạng Office Open XML. Tất cả danh tiếng cho nhóm PHPExcel vì openpyxl ban đầu dựa trên PHPExcel.

Làm cách nào để đọc giá trị ô trong Excel bằng Python openpyxl?

Chương trình đọc giá trị ô bằng Thư viện openpyxl trong Python . Nhập thư viện openpyxl vào chương trình Python. Bước 2. Tải/Kết nối sổ làm việc Excel với chương trình. Bước 3. Lấy tiêu đề của trang tính đầu tiên mặc định của Sổ làm việc. Bước 4. Tạo các biến và khởi tạo chúng với tên ô

Openpyxl hay pandas tốt hơn?

Theo cộng đồng StackShare, gấu trúc được chấp thuận rộng rãi hơn , được đề cập trong 41 nhóm công ty và 83 nhóm nhà phát triển; .

Chủ Đề