Hợp Nhất Các Ô Bảng

Đôi khi một số hàng nhất định trong bảng yêu cầu một tiêu đề hoặc các khối văn bản lớn chiếm toàn bộ chiều rộng của bảng. Để thiết kế bảng phù hợp, người dùng có thể hợp nhất một số ô bảng thành một. Aspose.Words hỗ trợ các ô được hợp nhất khi làm việc với tất cả các định dạng đầu vào, bao gồm nhập nội dung HTML.

Cách Hợp Nhất Các Ô Bảng

Trong Aspose.Words, các ô được hợp nhất được biểu thị bằng các thuộc tính sau của lớp CellFormat:

  • HorizontalMerge mô tả nếu ô là một phần của sự hợp nhất ngang của các ô
  • VerticalMerge mô tả nếu ô là một phần của sự hợp nhất theo chiều dọc của các ô

Các giá trị của các thuộc tính này xác định hành vi hợp nhất của các ô:

Kiểm tra Xem Ô có được Hợp nhất hay không

Để kiểm tra xem một ô có phải là một phần của chuỗi các ô được hợp nhất hay không, chúng tôi chỉ cần kiểm tra các thuộc tính HorizontalMergeVerticalMerge.

Ví dụ mã sau đây cho thấy cách in kiểu hợp nhất ô ngang và dọc:

Các Ô được hợp nhất trong Một Bảng

Để hợp nhất các ô trong bảng được tạo bằng DocumentBuilder, bạn cần đặt kiểu hợp nhất thích hợp cho mỗi ô nơi dự kiến hợp nhất – đầu tiên CellMerge.First và sau đó CellMerge.Previous.

Ngoài ra, bạn phải nhớ xóa cài đặt hợp nhất cho các ô không cần hợp nhất – điều này có thể được thực hiện bằng cách đặt ô không hợp nhất đầu tiên thành CellMerge.None. Nếu điều này không được thực hiện, tất cả các ô trong bảng sẽ được hợp nhất.

Ví dụ mã sau đây cho thấy cách tạo một bảng có hai hàng trong đó các ô trong hàng đầu tiên được hợp nhất theo chiều ngang:

Ví dụ mã sau đây cho thấy cách tạo bảng hai cột trong đó các ô trong cột đầu tiên được hợp nhất theo chiều dọc:

Hợp Nhất Các Ô Bảng Trong Các Trường hợp khác

Trong các tình huống khác mà DocumentBuilder không được sử dụng, chẳng hạn như trong bảng hiện có, việc hợp nhất các ô theo cách trước đó có thể không dễ dàng như vậy. Thay vào đó, chúng ta có thể bọc các hoạt động cơ bản liên quan đến việc áp dụng các thuộc tính hợp nhất cho các ô trong một phương thức giúp nhiệm vụ dễ dàng hơn nhiều. Phương thức này tương tự như Phương thức Tự động Hóa Hợp nhất, được gọi để hợp nhất một loạt các ô trong bảng.

Mã dưới đây sẽ hợp nhất các ô bảng trong phạm vi được chỉ định, bắt đầu từ ô đã cho và kết thúc ở ô cuối. Trong trường hợp này, phạm vi có thể kéo dài nhiều hàng hoặc cột:

Ví dụ mã sau đây cho thấy cách hợp nhất một phạm vi ô giữa hai ô được chỉ định:

Tùy thuộc vào phiên bản Của Khung Bạn đang sử dụng, bạn có thể muốn tinh chỉnh phương thức này bằng cách biến nó thành một phương thức mở rộng. Trong trường hợp này, bạn có thể gọi phương thức này trực tiếp trên một ô để hợp nhất một phạm vi ô, chẳng hạn như cell1.Merge(cell2).

Các Ô được Hợp nhất dọc Và Ngang trong Bảng

Như chúng tôi đã nói trong các bài viết trước, một bảng trong Microsoft Word là một tập hợp các hàng độc lập. Mỗi hàng có một tập hợp các ô độc lập với các ô của các hàng khác. Do đó, trong bảng Microsoft Word không có đối tượng nào như “cột” và “cột1st” là một cái gì đó giống như “tập hợp các ô 1st của mỗi hàng trong bảng”. Điều này cho phép người dùng có một bảng trong đó, ví dụ, hàng 1st bao gồm hai ô – 2cm và 1cm và hàng 2nd bao gồm hai ô khác nhau – 1cm và 2cm rộng. Và Aspose.Words hỗ trợ khái niệm bảng này.

Một bảng trong HTML có cấu trúc cơ bản khác nhau: mỗi hàng có cùng số ô và (điều quan trọng đối với tác vụ) mỗi ô có chiều rộng của cột tương ứng, giống nhau cho tất cả các ô trong một cột. Vì vậy, nếu HorizontalMergeVerticalMerge trả về một giá trị không chính xác, hãy sử dụng ví dụ mã sau:

Chuyển đổi Sang Các Ô Được Hợp nhất Theo Chiều Ngang

Đôi khi không thể phát hiện ô nào được hợp nhất vì một số phiên bản mới hơn của Microsoft Word không còn sử dụng cờ hợp nhất khi các ô được hợp nhất theo chiều ngang. Nhưng đối với các tình huống mà các ô được hợp nhất thành một ô theo chiều ngang theo chiều rộng của chúng bằng cách sử dụng các cờ hợp nhất, Aspose.Words cung cấp phương thức ConvertToHorizontallyMergedCells để chuyển đổi các ô. Phương pháp này chỉ đơn giản là biến đổi bảng và thêm các ô mới khi cần thiết.

Ví dụ mã sau đây cho thấy phương thức trên đang hoạt động: