Hướng dẫn how do i add a new column in excel openpyxl? - làm cách nào để thêm một cột mới trong excel openpyxl?

Không tìm thấy bất cứ điều gì như .EntireColumn.Insert trong openpyxl.

Suy nghĩ đầu tiên xuất hiện trong tâm trí tôi là chèn cột theo cách thủ công bằng cách sửa đổi _Cells trên bảng tính. Tôi không nghĩ đó là cách tốt nhất để chèn cột nhưng nó hoạt động:

from openpyxl.workbook import Workbook
from openpyxl.cell import get_column_letter, Cell, column_index_from_string, coordinate_from_string

wb = Workbook()
dest_filename = r'empty_book.xlsx'
ws = wb.worksheets[0]
ws.title = "range names"

# inserting sample data
for col_idx in xrange(1, 10):
    col = get_column_letter(col_idx)
    for row in xrange(1, 10):
        ws.cell('%s%s' % (col, row)).value = '%s%s' % (col, row)

# inserting column between 4 and 5
column_index = 5
new_cells = {}
ws.column_dimensions = {}
for coordinate, cell in ws._cells.iteritems():
    column_letter, row = coordinate_from_string(coordinate)
    column = column_index_from_string(column_letter)

    # shifting columns
    if column >= column_index:
        column += 1

    column_letter = get_column_letter(column)
    coordinate = '%s%s' % (column_letter, row)

    # it's important to create new Cell object
    new_cells[coordinate] = Cell(ws, column_letter, row, cell.value)

ws._cells = new_cells
wb.save(filename=dest_filename)

Tôi hiểu rằng giải pháp này rất xấu nhưng tôi hy vọng nó sẽ giúp bạn suy nghĩ đúng.

Hướng dẫn này sẽ chỉ cho bạn cách sử dụng thư viện Python OpenPyXL để chèn các hàng, cột và các ô hợp nhất trong một sổ làm việc Excel. Định dạng một tệp Excel có thể là một nhiệm vụ tẻ nhạt và tốn thời gian, vì vậy, đó là một nhiệm vụ tốt để tự động hóa!openpyxl library to insert rows, columns and merge cells in an Excel workbook. Formatting an Excel file can be a tedious and time-consuming task, so it’s a good task to automate away!

Thư viện

Chúng tôi sẽ sử dụng thư viện OpenPyXL để xây dựng bảng tính Excel ngân sách đơn giản. Để cài đặt thư viện, hãy nhập cửa sổ nhắc lệnh sau:openpyxl library to build a simple budgeting Excel spreadsheet. To install the library, type the following into a command prompt window:

pip install openpyxl

Dữ liệu mô phỏng

Mã dưới đây tạo ra một tệp excel có tên là định dạng của.xlsx, với một số dữ liệu bên trong. Sao chép và chạy mã sau nếu bạn muốn theo dõi:

from openpyxl import Workbook

wb = Workbook()
ws = wb.active
ws.title = 'formatting'

income = [('Income', ''),
          ('Salary', 1000),
          ('Investment', 500),
          ('Side hustle', 500),
          ('Total', 2000)]

expense = [('Expense',''),
           ('Housing', 1200),
           ('Insurance', 200),
           ('Grocery', 500),
           ('Entertainment', 500),
           ('Total', 2400)]

for row in income+expense:
    ws.append(row)

wb.save('formatting.xslx')

Bạn sẽ nhận được một tệp Excel không được định dạng trông như thế này:

Hướng dẫn how do i add a new column in excel openpyxl? - làm cách nào để thêm một cột mới trong excel openpyxl?
openpyxl tạo tệp excel

Hãy bắt đầu định dạng bằng cách di chuyển các ô (với dữ liệu) xung quanh để làm cho sổ làm việc trông đẹp hơn một chút. Thêm mã sau sau khối vòng lặp, nhưng trước khi lưu tệp:for loop block, but before saving the file:

ws.insert_rows(1,6)  
ws.insert_cols(1)
ws.move_range("B12:C17", rows = 2, cols = 0)

##Add more stuff
ws['B2'] = 'Monthly Budget'
ws['E7'] = 'Income'
ws['F7'] = '=sum(C8:C10)'
ws['E9'] = 'Expense'
ws['F9'] = '=sum(C15:C18)'
ws['E11'] = 'Net'
ws['F11'] = '=F7-F9'
ws['E13'] = 'Exp/Income Ratio'
ws['F13'] = '=F9/F7'

Khối mã trên đã làm như sau:

  1. Dòng 1-Chèn 6 hàng, từ hàng 1-6
  2. Dòng thứ 2 - Chèn 1 cột tại cột A (1)
  3. Và dòng thứ 3 - đã di chuyển phần chi phí (với 2 bước trước đó, phần này hiện ở mức B12: C17) xuống 2 hàng
  4. Phần còn lại của mã - Đã thêm một loạt những thứ khác trong B2 và các ô xung quanh E7: F13

Hướng dẫn how do i add a new column in excel openpyxl? - làm cách nào để thêm một cột mới trong excel openpyxl?
Chèn các hàng và cột bằng Python OpenPyxl

Hợp nhất các tế bào bằng cách sử dụng openpyxl

Tiếp tục với những điều trên, thêm các phần sau ngay sau khối mã trước đó. Mã dưới đây hợp nhất một số ô với nhau. Lưu ý hai cách hợp nhất các ô bằng phương thức ws.merge_cell ():ws.merge_cell() method:

  1. Sử dụng ký hiệu phạm vi excel bình thường, ví dụ: ‘B2: F2,
  2. Sử dụng 4 đối số để chọn ranh giới cho các ô được hợp nhất
ws.merge_cells('B2:F2')

ws.merge_cells('E7:E8')
ws.merge_cells('F7:F8')

for r in range(9,14,2):
    for c in range(5,7):
        ws.merge_cells(start_row = r, start_column = c, end_row=r+1, end_column = c)

Hướng dẫn how do i add a new column in excel openpyxl? - làm cách nào để thêm một cột mới trong excel openpyxl?
Hợp nhất các tế bào bằng cách sử dụng python openpyxl

Tài nguyên bổ sung

Cách sử dụng Python để đọc Công thức Excel

Cách làm việc với phạm vi Excel có tên trong Python

Làm việc với phạm vi excel có tên trong Python

Viết dữ liệu vào Excel bằng Python