Cách làm việc với Styles trong .NET

Cách làm việc với Styles trong .NET

Hướng dẫn này chỉ cách tra cứu, áp dụng và tạo các kiểu đoạn văn, ký tự, bảng và danh sách trong Aspose.Words FOSS cho .NET, sử dụng Style, StyleCollection, và TableStyle các lớp. Nó bao gồm việc đọc bộ sưu tập kiểu của tài liệu, tra cứu kiểu một cách đáng tin cậy trên các ngôn ngữ, áp dụng kiểu cho các đoạn văn và đoạn chạy, tạo và sao chép kiểu, và cấu hình định dạng có điều kiện theo vùng trên các kiểu bảng.

Hướng dẫn Từng Bước

Bước 1: Cài đặt Package

Aspose.Words FOSS for .NET chưa phát hành gói NuGet – hãy xây dựng thư viện từ mã nguồn thay vì. Sao chép https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git, sau đó biên dịch Aspose.Words.sln trong cấu hình Release bằng SDK .NET và tham chiếu assembly Aspose.Words kết quả từ dự án của bạn. Thư viện nhắm tới .NET Standard 2.0, vì vậy nó chạy trên .NET Framework 4.6.2+ và .NET 6/8/10.


Bước 2: Nhập các Classes Cần Thiết

Thêm một chỉ thị using Aspose.Words; – Style, StyleCollection, TableStyle, StyleType, StyleIdentifier, ConditionalStyle, ConditionalStyleCollection, và ConditionalStyleType đều nằm trong không gian tên Aspose.Words cùng với Document.


Bước 3: Đọc Bộ sưu tập Kiểu của Tài liệu

Document.Styles trả về một StyleCollection – mọi Style tích hợp sẵn và do người dùng định nghĩa được gắn vào tài liệu. StyleCollection.Count báo cáo số lượng kiểu mà nó chứa, và DefaultFont / DefaultParagraphFormat mô tả định dạng mặc định cho 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.


Bước 4: Tìm Kiểu một cách Đáng tin cậy

Truy xuất một kiểu bằng tên hiển thị của nó bằng cách sử dụng bộ chỉ mục StyleCollection, styles[name]. Đối với các kiểu tích hợp sẵn, nên dùng cùng bộ chỉ mục với giá trị enum StyleIdentifier thay thế – styles[sti] – tên được bản địa hoá, nhưng các giá trị StyleIdentifier thì không, vì vậy việc tra cứu theo định danh hoạt động giống nhau bất kể ngôn ngữ của tài liệu. Kiểm tra Style.Aliases để tìm các tên thay thế mà Word công nhận cho cùng một kiểu nếu bộ chỉ mục không tìm thấy những gì bạn mong đợi, và kiểm tra Style.BuiltIn trước khi xóa hoặc đổi tên một kiểu bằng lập trình, vì các kiểu tích hợp sẵn thường được tham chiếu bằng tên ở các vị trí khác trong tài liệu.


Bước 5: Áp dụng Kiểu cho Đoạn Văn hoặc Đoạn Chạy

Các đối tượng định dạng mang một kiểu hiển thị cả thuộc tính Style (đối tượng Style tự nó) và thuộc tính StyleName (một phím tắt giúp giải quyết, hoặc tạo, một kiểu theo tên). Đặt ParagraphFormat.Style hoặc ParagraphFormat.StyleName để áp dụng kiểu đoạn văn, và Font.Style hoặc Font.StyleName để áp dụng kiểu ký tự cho định dạng của một run. Gán StyleName với một tên chưa tồn tại trong bộ sưu tập sẽ tạo ra kiểu đó – trước tiên hãy xác nhận kiểu tồn tại bằng bộ chỉ mục StyleCollection, hoặc gán trực tiếp đối tượng Style, nếu đó không phải là hành vi dự định.


Bước 6: Xây dựng Cây phân cấp Kiểu

Đọc BaseStyleName để tìm kiểu mà một kiểu cho trước kế thừa định dạng chưa được đặt, LinkedStyleName cho kiểu đoạn văn/ký tự ghép đôi (theo định nghĩa của Word cho các kiểu tích hợp sẵn như tiêu đề và kiểu ký tự liên kết của nó), và NextParagraphStyleName cho kiểu mà Word gán cho một đoạn văn mới được gõ sau đoạn sử dụng kiểu này. Đặt BaseStyleName khi định nghĩa một nhóm các kiểu liên quan – chẳng hạn như một họ các kiểu tiêu đề mà tất cả nên kế thừa lựa chọn phông chữ từ một kiểu cơ sở – thay vì lặp lại cùng một định dạng trên mỗi kiểu.


Bước 7: Tạo hoặc Sao chép một Kiểu

Gọi StyleCollection.Add(type, name) với một StyleType (Paragraph, Character, Table hoặc List) và một tên để tạo một kiểu mới, trống, sau đó đặt các thuộc tính Font và ParagraphFormat của nó theo nhu cầu. Để sao chép một kiểu hiện có – bao gồm một kiểu từ StyleCollection của Document khác – hãy gọi StyleCollection.AddCopy(style) thay vì tự đọc và áp dụng lại từng thuộc tính định dạng. Gọi Style.Remove() để xóa một kiểu khỏi bộ sưu tập của nó.


Bước 8: Cấu hình 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 – Alignment, CellSpacing, LeftIndent, Shading, VerticalAlignment, và bốn thuộc tính đệm (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. Đối với định dạng theo vùng, cấu hình TableStyle.ConditionalStyles – một ConditionalStyleCollection chứa một ConditionalStyle cho mỗi vùng: FirstRow, LastRow, FirstColumn, LastColumn, OddRowBanding, EvenRowBanding, OddColumnBanding, EvenColumnBanding, và bốn ô góc (TopLeftCell, TopRightCell, BottomLeftCell, BottomRightCell). Mỗi ConditionalStyle mang Font, ParagraphFormat, Shading, Borders, và đệm ô của riêng nó, với Type báo cáo vùng ConditionalStyleType mà nó đại diện; đặt định dạng trên các vùng này thay vì trên từng hàng bảng riêng lẻ để có được định dạng dải, hàng tiêu đề, hoặc ô góc mà vẫn giữ nguyên khi chỉnh sửa bảng.


Bước 9: Đặt lại hoặc Xóa định dạng

Gọi ConditionalStyle.ClearFormatting() để đặt lại một vùng có điều kiện, hoặc ConditionalStyleCollection.ClearFormatting() để đặt lại mọi vùng trên một TableStyle cùng một lúc. StyleCollection.ClearQuickStyleGallery() loại bỏ mọi kiểu khỏi thư viện nhanh kiểu của giao diện Word mà không xóa các kiểu đó – hữu ích để thu gọn thư viện mà không ảnh hưởng đến nội dung tài liệu.

Các vấn đề thường gặp và cách khắc phục

StyleCollection indexer trả về null cho việc tra cứu tên Tên kiểu không tồn tại trong tài liệu này, hoặc một kiểu tích hợp sẵn chưa được sử dụng, vì vậy Word chưa khởi tạo nó. Kiểm tra Style.Aliases cho các tên thay thế, hoặc sử dụng the StyleCollection bộ chỉ mục với một StyleIdentifier để thay thế cho các kiểu dựng sẵn.

Việc thiết lập StyleName một cách bất ngờ tạo ra một kiểu mới StyleName tạo kiểu có tên nếu nó chưa tồn tại trong bộ sưu tập. Sử dụng StyleCollection bộ chỉ mục trước để xác nhận kiểu đã tồn tại, hoặc gán Style đối tượng trực tiếp qua Style thuộc tính thay vì StyleName.

Bảng dải không hiển thị sau khi áp dụng một TableStyle Các vùng định dạng có điều kiện – OddRowBanding, EvenRowBanding, và tương tự – chưa bao giờ được cấu hình trên TableStyle.ConditionalStyles. Đặt định dạng cho các mục liên quan ConditionalStyle mục 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) áp dụng lên trên kiểu sẽ có ưu tiên hơn cài đặt của kiểu. Xóa định dạng trực tiếp trên các đoạn hoặc đoạn văn bị ảnh hưởng, hoặc đặt Style.AutomaticallyUpdate để kiểu tự định nghĩa lại từ định dạng thủ công đó.

Việc tra cứu kiểu tích hợp sẵn thất bại trong tài liệu được viết bằng ngôn ngữ khác The StyleCollection trình lập chỉ mục khớp với tên hiển thị, vốn được bản địa hóa, khi được gọi bằng một tên. Sử dụng cùng một trình lập chỉ mục với giá trị enum tương ứng StyleIdentifier giá trị enum thay thế, vì định danh đó không phụ thuộc vào ngôn ngữ.

Câu hỏi thường gặp

Làm thế nào để tôi lấy bộ sưu tậ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 dựng sẵn và do người dùng định nghĩa trong tài liệu đó.

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

Style là đối tượng style 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 style tích hợp cụ thể bất kể ngôn ngữ của tài liệu, thông qua bộ chỉ mục StyleCollection.

Style bảng khác với style đoạn hoặc ký tự như thế nào?

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 bộ sưu tập ConditionalStyles cho việc định dạng theo vùng như các hàng dải, hàng tiêu đề và ô góc — các khái niệm định dạng không áp dụng cho style đoạn hoặc ký tự.

Tôi có thể tạo một style hoàn toàn mới thay vì sửa đổi một style hiện có 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 style 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 style đoạn hoặc ký tự).

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

Gọi 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.

Xem thêm

 Tiếng Việt