Để ghi đè các đầu vào mặc định được xác định bởi tệp excel hoặc để áp đặt một số giá trị cho một ô cụ thể
>>> xl_model.calculate[ .. inputs={ .. "'[excel.xlsx]'!INPUT_A": 3, # To overwrite the default value. .. "'[excel.xlsx]DATA'!B3": 1 # To impose a value to B3 cell. .. }, .. outputs=[ .. "'[excel.xlsx]DATA'!C2", "'[excel.xlsx]DATA'!C4" .. ] # To define the outputs that you want to calculate. .. ] Solution[[["'[excel.xlsx]'!INPUT_A", ['[excel.xlsx]DATA'!A2]=[[3]]], ["'[excel.xlsx]DATA'!B3", ['[excel.xlsx]DATA'!B3]=[[1]]], ["'[excel.xlsx]DATA'!A2", ['[excel.xlsx]DATA'!A2]=[[3]]], ["'[excel.xlsx]DATA'!A3", ['[excel.xlsx]DATA'!A3]=[[6]]], ["'[excel.xlsx]DATA'!D2", ['[excel.xlsx]DATA'!D2]=[[1]]], ["'[excel.xlsx]'!INPUT_B", ['[excel.xlsx]DATA'!A3]=[[6]]], ["'[excel.xlsx]DATA'!B2", ['[excel.xlsx]DATA'!B2]=[[9.0]]], ["'[excel.xlsx]DATA'!D3", ['[excel.xlsx]DATA'!D3]=[[2.0]]], ["'[excel.xlsx]DATA'!C2", ['[excel.xlsx]DATA'!C2]=[[10.0]]], ["'[excel.xlsx]DATA'!D4", ['[excel.xlsx]DATA'!D4]=[[3.0]]], ["'[excel.xlsx]DATA'!C4", ['[excel.xlsx]DATA'!C4]=[[4.0]]]]]
Để xây dựng một hàm duy nhất từ mô hình excel với đầu vào và đầu ra cố định, bạn có thể sử dụng phương thức biên dịch của ExcelModel trả về một DispatchPipe. Đây là chức năng trong đó đầu vào và đầu ra được xác định bởi id nút dữ liệu [i. e. , tham chiếu ô]
>>> func = xl_model.compile[ .. inputs=[ .. "'[excel.xlsx]'!INPUT_A", # First argument of the function. .. "'[excel.xlsx]DATA'!B3" # Second argument of the function. .. ], # To define function inputs. .. outputs=[ .. "'[excel.xlsx]DATA'!C2", "'[excel.xlsx]DATA'!C4" .. ] # To define function outputs. .. ] >>> func >>> [v.value[0, 0] for v in func[3, 1]] # To retrieve the data. [10.0, 4.0] >>> func.plot[view=False] # Set view=True to plot in the default browser. SiteMap[[[ExcelModel, SiteMap[...]]]]
[biểu đồ]
Ngoài ra, để tải một phần mô hình excel từ các ô đầu ra, bạn có thể sử dụng phương thức from_ranges của ExcelModel
>>> xl = formulas.ExcelModel[].from_ranges[ .. "'[%s]DATA'!C2:D2" % fpath, # Output range. .. "'[%s]DATA'!B4" % fpath, # Output cell. .. ] >>> dsp = xl.dsp >>> sorted[dsp.data_nodes] ["'[excel.xlsx]'!INPUT_A", "'[excel.xlsx]'!INPUT_B", "'[excel.xlsx]'!INPUT_C", "'[excel.xlsx]DATA'!A2", "'[excel.xlsx]DATA'!A3", "'[excel.xlsx]DATA'!A3:A4", "'[excel.xlsx]DATA'!A4", "'[excel.xlsx]DATA'!B2", "'[excel.xlsx]DATA'!B3", "'[excel.xlsx]DATA'!B4", "'[excel.xlsx]DATA'!C2", "'[excel.xlsx]DATA'!D2"]
[biểu đồ]
Xuất/nhập JSON
ExcelModel có thể được xuất/nhập sang/từ định dạng JSON có thể đọc được. Lý do của chức năng này là có định dạng có thể dễ dàng duy trì [e. g. sử dụng các chương trình kiểm soát phiên bản như git]. Làm theo một ví dụ về cách xuất/nhập vào/từ JSON một ExcelModel
Chúng ta có thể viết cả dữ liệu thô và công thức vào tệp Excel bằng Python. Thư viện openpyxl cung cấp cho chúng tôi rất nhiều tính linh hoạt để tạo tệp Excel
Điều hướng tệp Excel bằng Python
Chúng tôi đã thảo luận về cách truy cập Trang tính và Ô trong hướng dẫn này
Trước tiên hãy tạo một sổ làm việc Excel bằng openpyxl. Lưu ý một Workbook luôn được tạo với ít nhất một Worksheet, wb. active trả về Worksheet đầu tiên bên trong Workbook
from openpyxl import Workbook
wb = Workbook[]
ws = wb.active
Trong Excel, hai cách phổ biến để tham chiếu vị trí ô là 1] ký hiệu hàng cột và 2] ký hiệu [hàng, col]. Ví dụ: bên dưới đề cập đến cùng một ô tại B3
ws['C2']
ws.cell[2,3]
Mặc dù con người dễ dàng đọc ký hiệu hàng cột như “C2”, nhưng khi chúng ta tương tác với các ô theo chương trình, việc sử dụng ký hiệu [hàng, col] sẽ dễ dàng hơn vì chúng chỉ là chỉ số/số. Điều duy nhất cần chú ý là chỉ số hàng và cột bắt đầu từ 1 thay vì 0
Phương pháp tiện ích tọa độ di động
openpyxl cung cấp một số phương thức tiện ích tiện dụng để chuyển đổi tọa độ. Từ cột-hàng đến [hàng, col] và ngược lại
from openpyxl.utils.cell import [cols_from_range,
rows_from_range,
column_index_from_string,
get_column_letter,
coordinate_to_tuple]
column_index_from_string["A"]
1
get_column_letter[26]
'Z'
coordinate_to_tuple['B2']
[2, 2]
c = [2,3]
get_column_letter[c[1]] + str[c[0]]
'C2'
Chúng tôi cũng có thể nhận được tất cả các địa chỉ ô riêng lẻ từ một phạm vi. Lưu ý sự khác biệt dưới đây
- cols_from_range[] tạo mỗi lần một cột
- rows_from_range[] tạo ra một hàng tại một thời điểm
for c in cols_from_range["A1:F6"]:
print[c]
['A1', 'A2', 'A3', 'A4', 'A5', 'A6']
['B1', 'B2', 'B3', 'B4', 'B5', 'B6']
['C1', 'C2', 'C3', 'C4', 'C5', 'C6']
['D1', 'D2', 'D3', 'D4', 'D5', 'D6']
['E1', 'E2', 'E3', 'E4', 'E5', 'E6']
['F1', 'F2', 'F3', 'F4', 'F5', 'F6']
for c in rows_from_range["A1:F6"]:
print[c]
['A1', 'B1', 'C1', 'D1', 'E1', 'F1']
['A2', 'B2', 'C2', 'D2', 'E2', 'F2']
['A3', 'B3', 'C3', 'D3', 'E3', 'F3']
['A4', 'B4', 'C4', 'D4', 'E4', 'F4']
['A5', 'B5', 'C5', 'D5', 'E5', 'F5']
['A6', 'B6', 'C6', 'D6', 'E6', 'F6']
Viết giá trị vào Excel bằng Python
Có hai cách để ghi giá trị vào một ô. Một là bằng cách đặt ô. thuộc tính giá trị, cách khác là bằng cách gọi phương thức ô [hàng, col, giá trị]. Lưu ý bên dưới sự khác biệt tinh tế giữa các dòng #2 và #3
ws['C2'].value = 'Pi'
ws.cell[2,4,value = 'Radius'] #cell D2
ws.cell[2,5].value = 'Area' #cell E2
Ký hiệu [row, col] giúp việc lặp qua các ô trở nên dễ dàng
________số 8Chúng ta cũng có thể sử dụng ô. phương thức offset[row, col] để trả về vị trí ô tương ứng với ô đang hoạt động
curr_cell = ws['D8']
for i in range[0,5]:
curr_cell.offset[row=i, column = 0].value = i+6
Viết công thức cho Excel bằng Python
Viết công thức dễ như viết giá trị vào Excel. Tất cả những gì chúng ta cần là coi các công thức Excel là các giá trị Chuỗi và gán chúng cho. thuộc tính giá trị. Bên trong giá trị Chuỗi Python, chúng tôi muốn bắt đầu bằng dấu bằng = vì đó là cách chúng tôi bắt đầu một công thức Excel
>>> func = xl_model.compile[ .. inputs=[ .. "'[excel.xlsx]'!INPUT_A", # First argument of the function. .. "'[excel.xlsx]DATA'!B3" # Second argument of the function. .. ], # To define function inputs. .. outputs=[ .. "'[excel.xlsx]DATA'!C2", "'[excel.xlsx]DATA'!C4" .. ] # To define function outputs. .. ] >>> func >>> [v.value[0, 0] for v in func[3, 1]] # To retrieve the data. [10.0, 4.0] >>> func.plot[view=False] # Set view=True to plot in the default browser. SiteMap[[[ExcelModel, SiteMap[...]]]]0
Bạn muốn sử dụng tham chiếu tuyệt đối bằng cách “sửa chữa” tọa độ ô trong công thức của mình? . Chúng ta có thể lấy tọa độ từ một đối tượng Ô từ. thuộc tính tọa độ trả về giá trị Chuỗi biểu thị địa chỉ ô. Tất nhiên, trong ví dụ này, chúng tôi đã biết đó là “C3” vì đó là những gì chúng tôi đã nhập vào mã. Điều này là để chỉ ra cách lấy tọa độ của một ô theo chương trình
>>> func = xl_model.compile[ .. inputs=[ .. "'[excel.xlsx]'!INPUT_A", # First argument of the function. .. "'[excel.xlsx]DATA'!B3" # Second argument of the function. .. ], # To define function inputs. .. outputs=[ .. "'[excel.xlsx]DATA'!C2", "'[excel.xlsx]DATA'!C4" .. ] # To define function outputs. .. ] >>> func >>> [v.value[0, 0] for v in func[3, 1]] # To retrieve the data. [10.0, 4.0] >>> func.plot[view=False] # Set view=True to plot in the default browser. SiteMap[[[ExcelModel, SiteMap[...]]]]1
Để tạo một tham chiếu tuyệt đối, chúng ta có thể sử dụng phương thức absolute_coordinate[] trong mô-đun tiện ích. Về cơ bản, nó chỉ thêm các dấu $ để sửa một ô
>>> func = xl_model.compile[ .. inputs=[ .. "'[excel.xlsx]'!INPUT_A", # First argument of the function. .. "'[excel.xlsx]DATA'!B3" # Second argument of the function. .. ], # To define function inputs. .. outputs=[ .. "'[excel.xlsx]DATA'!C2", "'[excel.xlsx]DATA'!C4" .. ] # To define function outputs. .. ] >>> func >>> [v.value[0, 0] for v in func[3, 1]] # To retrieve the data. [10.0, 4.0] >>> func.plot[view=False] # Set view=True to plot in the default browser. SiteMap[[[ExcelModel, SiteMap[...]]]]2
Hãy tính cột Diện tích bằng cách viết công thức Excel vào các ô, sau đó lưu file Excel vào đĩa