Làm việc với Styles

Làm việc với Kiểu dáng

Hướng dẫn này cho thấy cách làm việc với các kiểu đoạn văn, ký tự, bảng và danh sách trong Aspose.Words FOSS cho .NET — tra cứu và áp dụng các kiểu được tích hợp sẵn và tùy chỉnh, và cấu hình định dạng có điều kiện theo vùng trên các kiểu bảng.

Một đối tượng Style đại diện cho một kiểu có sẵn hoặc do người dùng định nghĩa — bộ sưu tập có tên của định dạng đoạn văn, phông chữ và danh sách mà Word áp dụng khi một đoạn hoặc một đoạn chạy được gán kiểu đó. Mỗi tài liệu công khai các kiểu của nó thông qua thuộc tính Document.Styles, trả về một StyleCollection. Các kiểu bảng được biểu diễn bằng TableStyle, một lớp con của Style bổ sung định dạng đặc thù cho bảng và định dạng có điều kiện theo vùng thông qua ConditionalStyleCollection.


Các loại Kiểu và Định danh

Mỗi Style có một thuộc tính Type kiểu StyleType, thuộc một trong các giá trị Paragraph, Character, Table hoặc List — tương ứng với bốn loại kiểu mà Word hỗ trợ. Các kiểu có sẵn cũng chứa một giá trị enum StyleIdentifier không phụ thuộc vào ngôn ngữ (ví dụ các giá trị tương ứng với tiêu đề, nhấn mạnh và kiểu siêu liên kết) để mã có thể tra cứu một kiểu có sẵn mà không cần dựa vào tên hiển thị của nó trong một ngôn ngữ cụ thể. Tên có thể đọc được của một kiểu có sẵn thông qua Style.Name, và Style.Aliases trả về bất kỳ tên thay thế nào mà Word nhận diện cho cùng một kiểu. Style.BuiltIn báo cáo liệu kiểu này có đi kèm với Word mặc định hay được định nghĩa trong tài liệu, và Style.IsHeading báo cáo liệu kiểu này có phải là một trong các kiểu tiêu đề có sẵn.

Truy cập và Quản lý Bộ sưu tập Kiểu

StyleCollection là bộ sưu tập của tất cả các đối tượng Style — có sẵn và tùy chỉnh — được gắn vào một tài liệu, truy cập qua Document.Styles. Lấy một kiểu bằng tên hiển thị của nó bằng cách sử dụng chỉ mục StyleCollection — styles[name] — hoặc lấy một kiểu có sẵn bằng StyleIdentifier không phụ thuộc vào ngôn ngữ bằng cùng chỉ mục — styles[sti] — cách này đáng tin cậy hơn so với tra cứu tên qua các tài liệu được viết bằng các ngôn ngữ khác nhau. Các kiểu mới được tạo bằng StyleCollection.Add(type, name), chỉ định StyleType và một tên, và một kiểu hiện có có thể được sao chép vào bộ sưu tập bằng StyleCollection.AddCopy(style). StyleCollection.Count báo cáo số lượng kiểu mà tài liệu chứa, và bộ sưu tập cũng cung cấp DefaultFont và DefaultParagraphFormat, mô tả định dạng mặc định toàn tài liệu mà nội dung mới kế thừa trước khi bất kỳ kiểu nào được áp dụng một cách rõ ràng. StyleCollection.ClearQuickStyleGallery() loại bỏ tất cả các kiểu khỏi thư viện nhanh kiểu của giao diện Word mà không xóa chính các kiểu.

Áp dụng Kiểu dáng cho Đoạn văn và Run

Các đối tượng định dạng có thể mang một kiểu dáng đều cung cấp cả thuộc tính Style (đối tượng Style tự nó) và thuộc tính StyleName (một phím tắt cho phép xác định hoặc tạo kiểu dáng theo tên). ParagraphFormat.Style và ParagraphFormat.StyleName áp dụng kiểu đoạn văn, trong khi Font.Style và Font.StyleName áp dụng kiểu ký tự cho định dạng của một run. Các thuộc tính LinkedStyleName, BaseStyleName và NextParagraphStyleName của một kiểu dáng mô tả cách nó liên quan tới các kiểu khác: BaseStyleName chỉ tên kiểu mà nó kế thừa định dạng chưa được đặt, LinkedStyleName chỉ tên một kiểu đoạn/kiểu ký tự ghép (như Word làm cho các kiểu dựng sẵn như Heading 1 và kiểu ký tự liên kết của nó), và NextParagraphStyleName chỉ tên kiểu mà Word gán cho một đoạn mới được gõ sau một đoạn sử dụng kiểu này.

Kiểu bảng và Định dạng có điều kiện

TableStyle mở rộng Style với các thuộc tính bố trí bảng như Alignment, CellSpacing, LeftIndent, Shading, VerticalAlignment, và padding (LeftPadding, RightPadding, TopPadding, BottomPadding), cộng thêm RowStripe và ColumnStripe, những thứ kiểm soát số hàng hoặc cột mà mẫu dải lặp lại. Ngoài việc định dạng bảng đồng nhất, TableStyle.ConditionalStyles trả về một ConditionalStyleCollection chứa một ConditionalStyle cho mỗi vùng bảng — FirstRow, LastRow, FirstColumn, LastColumn, OddRowBanding, EvenRowBanding, OddColumnBanding, EvenColumnBanding, và bốn ô góc (TopLeftCell, TopRightCell, BottomLeftCell, BottomRightCell). Mỗi ConditionalStyle mang các Font, ParagraphFormat, Shading, Borders riêng và padding ô, và thuộc tính Type của nó báo cáo vùng ConditionalStyleType mà nó đại diện. ConditionalStyle.ClearFormatting() và ConditionalStyleCollection.ClearFormatting() đặt lại định dạng cho một vùng hoặc toàn bộ tập hợp các vùng có điều kiện.

Siêu dữ liệu Kiểu dáng và Cờ hành vi

Nhiều thuộc tính kiểu boolean và số trên Style kiểm soát cách Word xử lý một kiểu dáng trong giao diện người dùng thay vì cách nó hiển thị: Locked ngăn không cho kiểu bị thay đổi khi bảo vệ định dạng đang hoạt động, IsQuickStyle điều khiển việc nó có xuất hiện trong thư viện nhanh-kiểu hay không, AutomaticallyUpdate khiến kiểu tự định nghĩa lại từ định dạng trực tiếp được áp dụng thủ công, SemiHidden và UnhideWhenUsed kiểm soát khả năng hiển thị trong danh sách kiểu trước và sau lần sử dụng đầu tiên, và Priority ảnh hưởng đến thứ tự sắp xếp trong thư viện. Một kiểu cũng cung cấp các thuộc tính List và ListFormat khi nó định nghĩa đánh số danh sách, và Style.Remove() xóa kiểu khỏi StyleCollection của nó.


Mẹo và Thực hành Tốt nhất

  • Ưu tiên sử dụng bộ chỉ mục StyleCollection với giá trị StyleIdentifier hơn việc tra cứu theo tên khi tìm một kiểu dựng sẵn — tên được địa phương hoá, nhưng giá trị StyleIdentifier không.
  • Đặt BaseStyleName để xây dựng các hệ thống kiểu (ví dụ, một tập hợp các kiểu tiêu đề mà tất cả đều kế thừa lựa chọn phông chữ từ một kiểu cơ sở) thay vì lặp lại định dạng trên mỗi kiểu.
  • Khi sao chép một kiểu giữa các tài liệu, hãy sử dụng StyleCollection.AddCopy(style) thay vì phải đọc và áp dụng lại từng thuộc tính định dạng một cách thủ công.
  • Cấu hình các vùng TableStyle.ConditionalStyles cho các bảng có dải thay thế thay vì định dạng thủ công các hàng xen kẽ trong mã — định dạng của mỗi vùng ConditionalStyle được áp dụng dựa trên ConditionalStyleType của nó, chứ không phải bằng cách đặt định dạng trực tiếp cho các hàng riêng lẻ.
  • Kiểm tra Style.BuiltIn trước khi xóa hoặc đổi tên một kiểu bằng chương trình; các kiểu tích hợp sẵn thường được tham chiếu bằng tên ở những nơi khác trong tài liệu.

Các vấn đề thường gặp

Vấn đềNguyên nhânCách khắc phục
StyleCollection indexer trả về null cho một truy vấn tênTên kiểu không tồn tại trong tài liệu này, hoặc một kiểu được tích hợp sẵn chưa được sử dụng nên Word chưa hiện thực nóKiểm tra Style.Aliases để tìm các tên thay thế, hoặc sử dụng bộ chỉ mục StyleCollection với một StyleIdentifier cho các kiểu tích hợp sẵn thay thế
Thiết lập StyleName không mong muốn tạo ra một kiểu mớiStyleName tạo ra kiểu đã đặt tên nếu nó chưa tồn tại trong bộ sưu tậpĐầu tiên, sử dụng bộ chỉ mục StyleCollection để xác nhận kiểu tồn tại, hoặc gán đối tượng Style trực tiếp qua thuộc tính Style
Dải màu bảng không xuất hiện sau khi áp dụng một TableStyleCác vùng định dạng có điều kiện (OddRowBanding, EvenRowBanding, v.v.) chưa bao giờ được cấu hình trên TableStyle.ConditionalStylesĐặt định dạng cho các mục ConditionalStyle liên quan trong ConditionalStyleCollection
Thay đổi kiểu không ảnh hưởng đến nội dung đã sử dụng kiểu đóĐịnh dạng trực tiếp (thủ công) đã được áp dụng lên kiểu và được ưu tiênXóa định dạng trực tiếp trên các đoạn/chạy bị ảnh hưởng, hoặc đặt Style.AutomaticallyUpdate

FAQ

Làm sao để tôi lấy tập hợp tất cả các kiểu trong một tài liệu?

Đọc Document.Styles, nó trả về một StyleCollection chứa mọi Style tích hợp sẵn và do người dùng định nghĩa trong tài liệu đó.

Sự khác biệt giữa Style và StyleIdentifier là gì?

Style là đối tượng kiểu thực tế với định dạng của nó; StyleIdentifier là một giá trị enum không phụ thuộc vào ngôn ngữ được dùng để tra cứu một có sẵn kiểu bất kể ngôn ngữ của tài liệu, thông qua StyleCollection bộ chỉ mục.

Kiểu bảng khác gì so với kiểu đoạn hoặc kiểu ký tự?

TableStyle là một lớp con của Style thêm các thuộc tính bố trí bảng (Alignment, CellSpacing, padding) và một tập hợp ConditionalStyles cho định dạng theo vùng như các hàng rải sọc, hàng tiêu đề và ô góc — những khái niệm định dạng này không áp dụng cho kiểu đoạn hoặc kiểu ký tự.

Tôi có thể tạo một kiểu mới hoàn toàn thay vì sửa đổi một kiểu đã tồn tại không?

Có — gọi StyleCollection.Add(type, name) với StyleType mong muốn và một tên mới để tạo một kiểu trống, sau đó đặt các thuộc tính định dạng của nó (Font, ParagraphFormat, và các thuộc tính khác cho paragraph/character styles).

Làm sao tôi có thể sao chép một kiểu, kể cả từ tài liệu khác?

Sử dụng StyleCollection.AddCopy(style), truyền một đối tượng Style (có thể đến từ StyleCollection của một Document khác) để thêm một bản sao của nó vào bộ sưu tập đích.


API Reference Tóm tắt

Lớp/Phương thứcMô tả
StyleMột kiểu đoạn, ký tự, bảng hoặc danh sách duy nhất, có sẵn hoặc do người dùng định nghĩa
StyleCollectionTập hợp tất cả các kiểu trong một tài liệu, được truy cập qua Document.Styles
Bộ chỉ mục StyleCollection theo tênTìm kiếm một kiểu theo tên hiển thị của nó, ví dụ styles["Heading 1"]
Bộ chỉ mục StyleCollection theo định danhTìm kiếm một kiểu có sẵn theo định danh không phụ thuộc vào ngôn ngữ, ví dụ styles[StyleIdentifier.Heading1]
StyleCollection.Add(type, name)Tạo một kiểu mới, trống cho StyleType
StyleCollection.AddCopy(style)Sao chép một kiểu hiện có vào bộ sưu tập này
StyleTypeEnum phân biệt các kiểu Paragraph, Character, Table và List
StyleIdentifierĐịnh danh không phụ thuộc vào locale cho một kiểu tích hợp sẵn
TableStyleMột lớp con Style cho việc định dạng bảng, bao gồm kiểu dáng có điều kiện theo vùng
ConditionalStyleCollectionTập hợp các mục ConditionalStyle theo vùng trên một TableStyle
ConditionalStyleĐịnh dạng (phông chữ, định dạng đoạn, tô bóng, viền, đệm) cho một vùng bảng
ConditionalStyleTypeEnum xác định vùng bảng nào mà ConditionalStyle áp dụng

Xem thêm

 Tiếng Việt