Áp dụng định dạng bảng
Mỗi phần tử của bảng có thể được áp dụng với định dạng khác nhau. Ví dụ, định dạng bảng sẽ được áp dụng vào toàn bộ bảng, định dạng hàng chỉ áp dụng cho các hàng cụ thể và định dạng ô chỉ áp dụng cho một số ô nhất định.
Aspose.Words cung cấp một tập lệnh phong phú API để thu hồi và áp dụng định dạng vào một bảng. Bạn có thể dùng các nút Table, RowFormat và CellFormat để đặt định dạng.
Trong bài viết này chúng ta sẽ nói về cách áp dụng định dạng cho các node bảng khác nhau và những cài đặt định dạng bảng mà Aspose.Words hỗ trợ.
Áp dụng định dạng cho các nút khác nhau
Trong phần này chúng ta sẽ xem xét việc áp dụng định dạng cho các nút bảng khác nhau.
Định dạng ở Cấp Bảng
Để áp dụng định dạng cho một bảng bạn có thể sử dụng các thuộc tính được cung cấp trên nút tương ứng Table bằng cách sử dụng các lớp Table, PreferredWidth, và TableCollection.
Hình ảnh bên dưới cho thấy đại diện của các tính năng định dạng Table trong Microsoft Word và các thuộc tính tương ứng trong Aspose.Words.
Mã ví dụ sau cho thấy cách áp dụng đường viền chùm của bảng:
Mã ví dụ sau cho thấy cách xây dựng một bảng với tất cả các đường viền được bật (mạng lưới):
Định dạng Dàn xếp Theo Hàng
Định dạng hàng** có thể được kiểm soát bằng cách sử dụng các lớp Row, RowFormat, và RowCollection.
Các hình ảnh dưới đây cho thấy một đại diện của các tính năng định dạng Row trong Microsoft Word và các thuộc tính tương ứng trong Aspose.Words.
Mã ví dụ cho thấy cách thay đổi định dạng hàng bảng:
Định dạng ở mức tế bào
Định dạng tại cấp tế bào được điều khiển bởi các lớp Cell, CellFormat, và CellCollection.
Lưu ý rằng một Cell chỉ có thể là nút con của một Row. Trong cùng lúc, phải có ít nhất một Paragraph trong Cell để định dạng được áp dụng cho nó.
Ngoài Paragraph thì bạn còn có thể chèn một Table vào Cell.
Các hình bên dưới hiển thị một đại diện của các tính năng định dạng Cell trong Microsoft Word và các thuộc tính tương ứng trong Aspose.Words.
Ví dụ mã sau cho thấy cách thay đổi định dạng của một tế bào bảng:
Mã ví dụ sau cho thấy cách đặt số lượng khoảng trống (điểm) để thêm vào bên trái / trên / bên phải / dưới của nội dung trong ô:
Chỉ định Chiều cao Hàng
Cách đơn giản nhất để đặt độ cao hàng là sử dụng DocumentBuilder. Sử dụng các thuộc tính RowFormat thích hợp bạn có thể đặt cài đặt cao độ mặc định hoặc áp dụng một chiều cao khác nhau cho từng hàng trong bảng.
Trong Aspose.Words, chiều cao hàng bảng được điều khiển bởi:
- thuộc tính cao hàng – Height sử dụng quy tắc chiều cao cho hàng được cung cấp – HeightRule
Đồng thời một độ cao khác nhau có thể được đặt cho mỗi hàng - điều này cho phép bạn kiểm soát rộng rãi các cài đặt bảng.
Mã ví dụ sau cho thấy cách tạo bảng chứa một tế bào duy nhất và áp dụng định dạng hàng:
Chỉ định chiều rộng Bảng và Ô
Một bảng trong một Microsoft Word tài liệu cung cấp nhiều cách khác nhau để thu nhỏ bảng và các ô riêng lẻ. Những thuộc tính này cho phép kiểm soát đáng kể sự xuất hiện và hành vi của bảng để Aspose.Words hỗ trợ hành vi của các bảng, giống như ở Microsoft Word.
Điều quan trọng là phải biết rằng các phần tử bảng có nhiều thuộc tính khác nhau có thể ảnh hưởng đến việc tính toán chiều rộng của bảng tổng thể cũng như các ô riêng lẻ
- Chiều rộng ưa thích trên bàn
- Chiều rộng ưa thích trên các ô riêng lẻ
- Cho phép tự động phù hợp trên bàn
Bài viết này giải thích cách các tính năng tính toán chiều rộng bảng khác nhau hoạt động và cách để có được sự kiểm soát đầy đủ về việc tính toán chiều rộng bảng. Đây là đặc biệt hữu ích để biết trong các trường hợp mà bố cục bảng không xuất hiện như mong đợi.
Trong hầu hết các trường hợp, “cell được đề nghị thích hơn chiều rộng bảng”. Chiều rộng ô được ưa thích là phù hợp hơn với thông số của định dạng DOCX cũng như mô hình Aspose.Words.
Chiều rộng của ô là một giá trị tính toán cho định dạng DOCX. Chiều rộng của tế bào thực tế có thể phụ thuộc vào nhiều điều. Ví dụ, thay đổi lề trang hoặc chiều rộng bảng ưa thích có thể ảnh hưởng đến độ rộng của các ô thực tế.
Chiều rộng tế bào ưa thích là một thuộc tính của tế bào được lưu trữ trong tài liệu. Nó không phụ thuộc vào bất cứ điều gì và không thay đổi khi bạn thay đổi bảng hoặc các thuộc tính khác của ô đó.
Cách sử dụng chiều rộng ưa thích
Chiều rộng mong muốn của một bảng hoặc các ô riêng lẻ được định nghĩa thông qua thuộc tính chiều rộng được ưa thích, đó là kích thước mà một phần tử cố gắng phù hợp. Đó là, chiều rộng ưa thích có thể được chỉ định cho toàn bộ bảng hoặc đối với các tế bào riêng lẻ. Trong một số tình huống có thể không thể vừa vặn chính xác chiều rộng này, nhưng chiều rộng thực tế sẽ gần với giá trị này trong hầu hết các trường hợp.
Loại và giá trị chiều rộng thích hợp được thiết lập bằng cách sử dụng các phương pháp của lớp PreferredWidth":
- trường Auto để chỉ định tự động hoặc “không chiều rộng ưa thích
- phương thức FromPercent để chỉ định một độ rộng phần trăm
- phương pháp FromPoints để chỉ định chiều rộng theo điểm
Hình ảnh bên dưới là biểu diễn các tính năng đặt chiều rộng ưa thích trong Microsoft Word và thuộc tính tương ứng trong Aspose.Words.
Một ví dụ về cách các tùy chọn này được áp dụng cho một bảng thực tế trong một tài liệu có thể được thấy trong hình bên dưới.
Chỉ định chiều rộng bảng hoặc tế bào ưa thích
Trong Aspose.Words, chiều rộng bảng và ô được đặt bằng thuộc tính Table.PreferredWidth và thuộc tính CellFormat.PreferredWidth, với các tùy chọn có sẵn trong việc đếm PreferredWidthType:
- Auto tương đương với không có chiều rộng được yêu thích
- Percent phù hợp với phần tử so với không gian có sẵn trong cửa sổ hoặc kích thước thùng chứa và tính toán lại giá trị khi chiều rộng có sẵn thay đổi
- Points tương ứng với một phần tử với chiều rộng theo điểm được chỉ định
Sử dụng thuộc tính Table.PreferredWidth sẽ điều chỉnh chiều rộng ưa thích của nó so với hộp chứa: trang, cột văn bản hoặc ô bảng ngoài nếu nó là một bảng lồng nhau.
Mã ví dụ sau cho thấy cách đặt bảng để tự động phù hợp với 50% chiều rộng trang”:
Sử dụng thuộc tính CellFormat.PreferredWidth trên một ô sẽ điều chỉnh chiều rộng ưu tiên của nó.
Mảnh mã ví dụ sau cho thấy cách thiết lập các cài đặt chiều rộng ưa thích khác nhau:
Tìm loại và giá trị chiều rộng ưa thích
Bạn có thể dùng các thuộc tính Type và Value để tìm chi tiết độ rộng ưa thích của bảng hoặc ô mong muốn.
Ví dụ mã sau cho thấy cách lấy kiểu chiều rộng được ưa thích của một ô bảng:
Cách đặt Autofit
Tính chất AllowAutoFit cho phép các ô trong bảng phát triển và thu nhỏ theo một tiêu chí được chọn. Ví dụ, bạn có thể dùng tùy chọn Đặt tự động vào cửa sổ để bàn tính phù hợp với chiều rộng trang, và tùy chọn Tự động Đúng Kích Thước Đến Nội Dung để phép mỗi ô thay đổi kích thước hoặc thu nhỏ theo nội dung của nó.
Theo mặc định, Aspose.Words chèn một bảng mới bằng cách sử dụng Auto Fit to Window. Bàn sẽ được tạo kích thước theo chiều rộng trang có sẵn. Để thay đổi kích thước một bảng, bạn có thể gọi phương thức AutoFit. Phương pháp này chấp nhận một enum AutoFitBehavior xác định loại tự động phù hợp nào được áp dụng cho bảng.
Điều quan trọng là biết rằng phương pháp tự động vừa và đúng thực chất là một phím tắt áp dụng các thuộc tính khác nhau cho bảng cùng lúc. Đây là các thuộc tính thực sự cho phép bảng có hành vi được quan sát này. Chúng ta sẽ thảo luận về các tính chất này cho mỗi tùy chọn tự động vừa vặn.
Mã ví dụ sau cho thấy cách đặt một bảng để thu nhỏ hoặc phát triển mỗi ô theo nội dung của nó:
Chúng tôi sẽ dùng bảng sau đây để áp dụng các cài đặt tự động phù hợp khác nhau như một ví dụ minh họa.
Tự động vừa vặn bảng vào cửa sổ
Khi tự động vừa vặn với một cửa sổ được áp dụng cho một bảng, các hoạt động sau đây thực sự được thực hiện phía sau hậu trường:
- Tính Table.AllowAutoFit được bật để tự động thay đổi cột để vừa với nội dung có sẵn, sử dụng giá trị Table.PreferredWidth là 100%
- CellFormat.PreferredWidth được xóa khỏi tất cả các ô bảng
Lưu ý rằng điều này hơi khác với Microsoft Word hành vi, nơi mỗi ô được đặt chiều rộng ưa thích của nó thành các giá trị phù hợp dựa trên kích thước và nội dung hiện tại của họ. Aspose.Words không cập nhật chiều rộng ưa thích vì vậy họ chỉ được dọn dẹp thay thế.
- Chiều rộng cột được tính toán lại cho nội dung bảng hiện tại - kết quả cuối cùng là một bảng chiếm toàn bộ chiều rộng có sẵn
- Chiều rộng của các cột trong bảng thay đổi tự động khi người dùng chỉnh sửa văn bản
Mã ví dụ sau cho thấy cách tự động thu nhỏ một bảng để phù hợp với chiều rộng trang:
Một ví dụ về cách các tùy chọn này được áp dụng cho bảng ở trên có thể thấy trong bức tranh dưới đây.
Tự động vừa vặn bảng với nội dung
Khi bảng được tự động phù hợp với nội dung, các bước sau thực sự được thực hiện phía sau hậu trường:
-
Cụm Table.AllowAutoFit được kích hoạt để tự động thay đổi kích thước mỗi ô theo nội dung của nó
-
Chiều rộng bảng được ưu tiên đã bị loại bỏ từ Table.PreferredWidth, CellFormat.PreferredWidth được loại bỏ cho mỗi ô bảng
Lưu ý rằng tùy chọn tự động này loại bỏ độ rộng ưa thích từ các ô, giống như trong Microsoft Word. Nếu bạn muốn giữ kích thước cột và tăng hoặc giảm số cột để phù hợp với nội dung, bạn nên đặt thuộc tính Table.AllowAutoFit là True của nó trên chính nó thay vì sử dụng phím tắt autofit. -
Độ rộng cột được tính toán lại cho nội dung bảng hiện tại - kết quả cuối cùng là một bảng nơi độ rộng của cột và chiều rộng của toàn bộ bảng tự động điều chỉnh để vừa với nội dung khi người dùng chỉnh sửa văn bản
Mã ví dụ sau cho thấy cách tự động vừa vặn bảng với nội dung của nó:
Ví dụ về cách các tùy chọn này được áp dụng cho bảng trên có thể thấy trong hình bên dưới.
Vô hiệu hóa AutoFit trong Bảng và Sử dụng Chiều rộng cột cố định
Nếu bảng đã tắt “tự điều chỉnh”, và chiều rộng cột cố định được sử dụng thay thế, các bước sau sẽ được thực hiện:
- Table.AllowAutoFit thuộc tính bị vô hiệu hóa nên các cột không tăng hay thu nhỏ để phù hợp với nội dung của chúng
- Chiều rộng được ưa thích của toàn bộ bảng là bị loại bỏ từ Table.PreferredWidth, CellFormat.PreferredWidth bị loại bỏ từ tất cả các ô bảng
- Kết quả cuối cùng là một bảng có chiều rộng cột được xác định bởi thuộc tính CellFormat.Width, và các cột không tự động thay đổi kích thước khi người dùng nhập văn bản hoặc khi trang được thay đổi kích thước
Mã ví dụ sau cho thấy cách tắt tính tự điều chỉnh và bật chiều rộng cố định cho bảng đã chỉ định:
Một ví dụ về cách áp dụng các tùy chọn này vào bảng trên có thể được thấy trong hình bên dưới.
Thứ tự của sự ưu tiên khi tính chiều rộng của tế bào
Aspose.Words cho phép người dùng định nghĩa chiều rộng của một bảng hoặc ô thông qua nhiều đối tượng, bao gồm CellFormat – thuộc tính Width của nó phần lớn còn thừa từ các phiên bản trước, nhưng nó vẫn hữu ích trong việc đơn giản hóa việc đặt chiều rộng của ô.
Điều quan trọng là phải biết rằng tính chất CellFormat.Width hoạt động khác nhau tùy thuộc vào việc những tính chất chiều rộng nào đã tồn tại trong bảng.
Aspose.Words dùng thứ tự sau đây để tính chiều rộng của các ô:
Đơn hàng | Tính chất | Mô tả |
---|---|---|
1 | AllowAutoFit được xác định | Nếu AutoFit được bật: - bàn có thể phát triển vượt quá chiều rộng ưa thích để chứa nội dung - nó thường không thu nhỏ dưới chiều rộng ưa thích - bất kỳ thay đổi nào đối với giá trị CellFormat.Width bị bỏ qua và ô sẽ vừa với nội dung của nó thay vì |
2 | PreferredWidthType có giá trị là Points hoặc Percent | CellFormat.Width được bỏ qua |
3 | PreferredWidthType với giá trị là Auto | Giá trị từ CellFormat.Width được sao chép và trở thành độ rộng ưa thích của ô (tính bằng điểm) |
Cho phép cách giữa các ô
Bạn có thể lấy hoặc đặt thêm không gian giữa các ô bảng tương tự như tùy chọn “Cell spacing” trong Microsoft Word. Điều này có thể thực hiện bằng cách sử dụng tính AllowCellSpacing thuộc tính.
Một ví dụ về cách các tùy chọn này được áp dụng cho một bảng thực tế trong một tài liệu có thể thấy ở hình bên dưới.
Mã ví dụ sau cho thấy cách đặt khoảng cách giữa các ô:
Áp dụng viền và bóng đổ
Biên và bóng có thể áp dụng cho toàn bộ bảng bằng cách sử dụng Table.SetBorder, Table.SetBorders và Table.SetShading, hoặc chỉ áp dụng cho các ô cụ thể bằng cách sử dụng CellFormat.Borders và CellFormat.Shading. Ngoài ra, các đường viền hàng có thể được đặt bằng RowFormat.Borders, tuy nhiên không thể áp dụng hiệu ứng này theo cách đó.
Các hình bên dưới cho thấy các thiết lập đường viền và bóng trong Microsoft Word và thuộc tính tương ứng của chúng trong Aspose.Words.
Mã ví dụ sau cho thấy cách định dạng bảng và các ô với đường viền khác nhau và hiệu ứng bóng đổ: