Tạo tài liệu Word trong C++

Aspose.Words là một bộ sưu tập API giàu tính năng cho phép bạn tạo, chỉnh sửa và chuyển đổi tài liệu MS Word theo chương trình. Nó cung cấp một loạt các tính năng cơ bản cũng như nâng cao để thao tác với các tài liệu xử lý văn bản. Trong bài viết này, bạn sẽ tìm hiểu cách sử dụng Aspose.Words for C++ và tạo tài liệu MS Word từ đầu bằng C++. Hướng dẫn từng bước cũng như các mẫu mã sẽ cho bạn biết cách chèn văn bản, hình ảnh, bảng, danh sách và các thành phần khác trong tài liệu Word.

API C++ để tạo tài liệu MS Word

Aspose.Words for C++ cho phép bạn tạo và thao tác các tài liệu soạn thảo văn bản trong các ứng dụng C++ mà không cần MS Word. Bạn có thể tải xuống API hoặc cài đặt nó trong các ứng dụng C++ của mình bằng NuGet bằng lệnh sau.

PM> Install-Package Aspose.Words.Cpp

Tạo tài liệu MS Word bằng C++

Trước tiên, hãy tạo một tài liệu Word đơn giản và lưu nó dưới dạng tệp .doc hoặc .docx. Đối với điều này, bạn cần làm theo các bước dưới đây:

Mẫu mã sau đây cho biết cách tạo tài liệu Word DOCX bằng C++.

// Khởi tạo một tài liệu.
System::SharedPtr<Document> doc = System::MakeObject<Document>();
// Sử dụng trình tạo tài liệu để thêm nội dung vào tài liệu.
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Thêm văn bản
builder->Writeln(u"Hello World!"); 
// Lưu tài liệu vào đĩa.
doc->Save(u"document.docx");

Chỉnh sửa hoặc cập nhật Word DOC/DOCX hiện có bằng C++

Bạn cũng có thể chỉnh sửa các tài liệu Word hiện có bằng Aspose.Words for C++. Đối với điều này, API sử dụng Mô hình đối tượng tài liệu (DOM) để biểu diễn tài liệu trong bộ nhớ. DOM cho phép bạn truy cập các phần tử của tài liệu Word như đầu trang/chân trang, đoạn văn, bảng, v.v. Đọc thêm về DOM tại đây.

Để cập nhật tài liệu Word, chỉ cần tải nó bằng lớp Document và xử lý nó theo ý muốn. Sau đây là các bước để chỉnh sửa và cập nhật tài liệu Word hiện có.

  • Tải tài liệu Word bằng lớp Document.
  • Tạo một đối tượng của lớp DocumentBuilder để truy cập nội dung.
  • Truy cập đoạn mong muốn (hoặc bất kỳ yếu tố nào khác) và cập nhật nội dung.
  • Lưu tài liệu đã cập nhật bằng phương pháp Document->Save().

Mẫu mã sau đây cho biết cách cập nhật văn bản của đoạn văn trong tài liệu Word bằng C++.

// Khởi tạo một tài liệu.
System::SharedPtr<Document> doc = System::MakeObject<Document>(u"document.docx");
// Sử dụng trình tạo tài liệu để thêm nội dung vào tài liệu.
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Nhận phần
auto section = doc->get_Sections()->idx_get(0);
// Nhận cơ thể
auto body = section->get_Body();
// Nhận đoạn đầu tiên
auto para = body->get_FirstParagraph();
// cập nhật văn bản
auto run = para->get_Runs()->idx_get(0);
run->set_Text(u"This is the updated text."); 
// Lưu tài liệu vào đĩa.
doc->Save(u"updated_document.docx");

Chèn hình ảnh vào tài liệu Word bằng C++

Sau đây là các bước để chèn hình ảnh vào tài liệu MS Word bằng C++.

Mẫu mã sau đây cho biết cách chèn hình ảnh vào tài liệu Word bằng C++.

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc); 
// Thêm logo vào phía trên bên trái của trang. Hình ảnh được đặt trước tất cả các văn bản khác.
System::SharedPtr<Shape> shape = builder->InsertImage( u"Aspose Logo.png", RelativeHorizontalPosition::Page, 60.0, RelativeVerticalPosition::Page, 60.0, -1.0, -1.0, WrapType::None);
doc->Save(u"document_with_image.docx");

Chèn bảng trong tài liệu Word bằng C++

Bảng là một thành phần quan trọng của văn bản Word để lưu giữ dữ liệu ở dạng hàng và cột. Để tạo bảng trong tài liệu Word, hãy làm theo các bước dưới đây.

  • Tạo một tài liệu Word mới bằng lớp Document.
  • Tạo một đối tượng của lớp Table.
  • Chèn bảng vào tài liệu bằng phương thức Document->getFirstSection()->getBody()->AppendChild().
  • Tạo một hàng mới bằng lớp Row.
  • Chèn hàng vào bảng bằng phương thức Table->AppendChild(row).
  • Tạo và mới Cell và chèn văn bản vào đó bằng phương thức Cell->getFirstParagraph()->AppendChild().
  • Chèn ô vào hàng bằng phương thức Row->AppendChild().
  • Lặp lại quy trình để thêm nhiều hàng.
  • Lưu tài liệu bằng phương pháp Document->Save().

Mẫu mã sau đây cho biết cách chèn bảng trong tài liệu Word bằng C++.

System::SharedPtr<Document> doc = System::MakeObject<Document>(); 
System::SharedPtr<Table> table = System::MakeObject<Table>(doc);
// Thêm bảng vào tài liệu.
doc->get_FirstSection()->get_Body()->AppendChild(table); 
System::SharedPtr<Row> row = System::MakeObject<Row>(doc);
row->get_RowFormat()->set_AllowBreakAcrossPages(true);
table->AppendChild(row);
// Bây giờ chúng ta có thể áp dụng bất kỳ cài đặt tự động điều chỉnh nào.
table->AutoFit(AutoFitBehavior::FixedColumnWidths);
// Tạo một ô và thêm nó vào hàng
System::SharedPtr<Cell> cell = System::MakeObject<Cell>(doc);
cell->get_CellFormat()->get_Shading()->set_BackgroundPatternColor(System::Drawing::Color::get_LightBlue());
cell->get_CellFormat()->set_Width(80);
// Thêm một đoạn vào ô cũng như chạy mới với một số văn bản.
cell->AppendChild(System::MakeObject<Paragraph>(doc));
cell->get_FirstParagraph()->AppendChild(System::MakeObject<Run>(doc, u"Row 1, Cell 1 Text"));
// Thêm ô vào hàng.
row->AppendChild(cell);
// Sau đó, chúng tôi sẽ lặp lại quy trình cho các ô và hàng khác trong bảng.
// Chúng ta cũng có thể tăng tốc mọi thứ bằng cách sao chép các ô và hàng hiện có.
row->AppendChild((System::StaticCast<Node>(cell))->Clone(false));
row->get_LastCell()->AppendChild(System::MakeObject<Paragraph>(doc));
row->get_LastCell()->get_FirstParagraph()->AppendChild(System::MakeObject<Run>(doc, u"Row 1, Cell 2 Text"));
// Lưu tài liệu vào đĩa.
doc->Save(u"document_with_table.docx");

Thêm danh sách trong tài liệu Word bằng C++

Cuối cùng nhưng không kém phần quan trọng, tạo danh sách trong tài liệu Word. Sau đây là các bước để tạo danh sách dấu đầu dòng.

  • Tạo tài liệu Word mới hoặc tải tài liệu hiện có bằng lớp Document.
  • Định nghĩa một đối tượng DocumentBuilder mới và khởi tạo nó với đối tượng Document.
  • Tạo danh sách bằng cách sử dụng phương thức DocumentBuilder->getListFormat()->setList(Document->getLists()->Add(ListTemplate::NumberArabicDot)).
  • Điền vào danh sách và đặt cấp độ danh sách.
  • Lưu tài liệu dưới dạng tệp.

Mẫu mã sau đây cho biết cách tạo danh sách trong tài liệu Word bằng C++.

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Tạo danh sách được đánh số dựa trên một trong các mẫu danh sách Microsoft Word và
// áp dụng nó cho đoạn hiện tại trong trình tạo tài liệu.
builder->get_ListFormat()->set_List(doc->get_Lists()->Add(ListTemplate::NumberArabicDot));
// Có 9 cấp độ trong danh sách này, hãy thử tất cả.
for (int32_t i = 0; i < 9; i++)
{
	builder->get_ListFormat()->set_ListLevelNumber(i);
	builder->Writeln(System::String(u"Level ") + i);
}
// Tạo danh sách dấu đầu dòng dựa trên một trong các mẫu danh sách Microsoft Word
// and áp dụng nó cho đoạn hiện tại trong trình tạo tài liệu.
builder->get_ListFormat()->set_List(doc->get_Lists()->Add(ListTemplate::BulletDiamonds));
// Có 9 cấp độ trong danh sách này, hãy thử tất cả.
for (int32_t i = 0; i < 9; i++)
{
	builder->get_ListFormat()->set_ListLevelNumber(i);
	builder->Writeln(System::String(u"Level ") + i);
}
// Đây là một cách để dừng định dạng danh sách. 
builder->get_ListFormat()->set_List(nullptr); 
// Lưu tài liệu vào đĩa.
builder->get_Document()->Save(u"document_with_list.docx");

Sự kết luận

Trong bài viết này, bạn đã biết cách tạo tài liệu MS Word từ đầu bằng C++. Ngoài ra, bạn đã học cách chèn các thành phần như văn bản, hình ảnh, bảng và danh sách vào tài liệu Word mới hoặc hiện có. Bạn có thể khám phá thêm về các tính năng nâng cao của API bằng cách sử dụng tài liệu.

Xem thêm