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
for i in range[1, 6]:
# starts from cell D3, ends at cell D7
ws.cell[2+i, 4].value = i
Chú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
ws['C3'].value = '=pi[]'
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
________số 8Để 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 ô
from openpyxl.utils.cell import absolute_coordinate
absolute_coordinate[ws['C3'].coordinate]
'$C$3'
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
nhập sổ làm việc xlsxwriter = xlsxwriter. Sổ làm việc ['write_list. xlsx'] trang tính = sổ làm việc. add_worksheet[] my_list = [[1, 1, 1, 1, 1], [2, 2, 2, 2, 1], [3, 3, 3, 3, 1], [4, 4, 4, 4 . cho col_num, col_data trong liệt kê [row_data]. bảng tính. sổ làm việc write[row_num, col_num, col_data]. đóng lại[]