Chèn DataTable vào Tài liệu Word trong C#

Là một nhà phát triển .NET, bạn phải xử lý các đối tượng DataTable rất thường xuyên. Đặc biệt, khi bạn cần nhập hoặc xuất dữ liệu từ cơ sở dữ liệu hoặc tệp XML/JSON. Trong khi tạo tài liệu theo chương trình, bạn có thể cần phải chèn trực tiếp dữ liệu từ các đối tượng DataTable vào bảng trong tài liệu Word. Đối với những trường hợp như vậy, hãy để tôi cung cấp cho bạn giải pháp hoàn hảo và dễ dàng nhất để chèn dữ liệu từ DataTable vào tài liệu Word trong C#.

Thư viện C# để chèn DataTable trong Word DOC - Tải xuống miễn phí

Để nhập dữ liệu từ các đối tượng DataTable vào tài liệu Word, chúng ta sẽ sử dụng Aspose.Words for .NET. Đây là một thư viện giàu tính năng cho phép bạn tạo và xử lý các tài liệu MS Word. Bạn có thể tải xuống DLL của nó hoặc cài đặt nó từ NuGet.

Tải xuống DLL

Cài đặt qua NuGet

PM> Install-Package Aspose.Words

C# Chèn DataTable vào Tài liệu Word - Các bước

Sau đây là các bước chúng tôi sẽ thực hiện để truy xuất dữ liệu từ DataTable và chèn dữ liệu đó vào tài liệu Word.

  • Tải dữ liệu từ cơ sở dữ liệu hoặc tệp dữ liệu vào đối tượng DataTable.
  • Tạo một tài liệu Word mới và thêm một bảng mới vào đó.
  • Lặp qua các hàng trong DataTable và chèn từng hàng vào bảng của Word.

Và thế là xong.

Bây giờ chúng ta hãy xem cách chuyển đổi các bước này thành mã C# và nhập một DataTable vào tài liệu Word.

Chèn dữ liệu từ DataTable vào Word DOC trong C#

Đầu tiên, chúng ta sẽ viết một phương thức chấp nhận DocumentBuilder để xây dựng tài liệu, DataTable có dữ liệu và một tham số bổ sung để bật/tắt nhập tiêu đề cột. Hơn nữa, nó trả về đối tượng Table.

Sau đây là quy trình làm việc của phương pháp này.

  • Tạo một bảng mới và lấy tham chiếu của nó vào một đối tượng Table.
  • Chèn các cột vào bảng theo các cột trong DataTable.
  • Đặt độ dày phông chữ nếu hàng đầu tiên dành cho tiêu đề.
  • Lặp qua từng DataRow trong bộ sưu tập DataTable.Rows.
  • Chèn một ô mới cho mỗi giá trị và đặt kiểu dữ liệu tương ứng.
  • Trả về đối tượng Table.

Sau đây là cách triển khai phương thức nhập dữ liệu từ DataTable vào bảng trong tài liệu Word trong C#.

///<summary>
/// Nhập nội dung từ DataTable đã chỉ định vào đối tượng Bảng Aspose.Words mới. 
/// Bảng được chèn vào vị trí hiện tại của trình tạo tài liệu và sử dụng định dạng của trình tạo hiện tại nếu có được xác định.
///</summary>
public static Table ImportTableFromDataTable(DocumentBuilder builder, DataTable dataTable, bool importColumnHeadings)
{
    Table table = builder.StartTable();

    // Kiểm tra xem tên của các cột từ nguồn dữ liệu có được đưa vào hàng tiêu đề hay không.
    if (importColumnHeadings)
    {
        // Lưu trữ các giá trị ban đầu của các thuộc tính này trước khi thay đổi chúng.
        bool boldValue = builder.Font.Bold;
        ParagraphAlignment paragraphAlignmentValue = builder.ParagraphFormat.Alignment;

        // Định dạng hàng tiêu đề với các thuộc tính thích hợp.
        builder.Font.Bold = true;
        builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;

        // Tạo một hàng mới và chèn tên của mỗi cột vào hàng đầu tiên của bảng.
        foreach (DataColumn column in dataTable.Columns)
        {
            builder.InsertCell();
            builder.Writeln(column.ColumnName);
        }

        builder.EndRow();

        // Khôi phục định dạng ban đầu.
        builder.Font.Bold = boldValue;
        builder.ParagraphFormat.Alignment = paragraphAlignmentValue;
    }

    foreach (DataRow dataRow in dataTable.Rows)
    {
        foreach (object item in dataRow.ItemArray)
        {
            // Chèn một ô mới cho mỗi đối tượng.
            builder.InsertCell();

            switch (item.GetType().Name)
            {
                case "DateTime":
                    // Xác định định dạng tùy chỉnh cho ngày và giờ.
                    DateTime dateTime = (DateTime)item;
                    builder.Write(dateTime.ToString("MMMM d, yyyy"));
                    break;
                default:
                    // Theo mặc định, bất kỳ mục nào khác sẽ được chèn dưới dạng văn bản.
                    builder.Write(item.ToString());
                    break;
            }

        }

        // Sau khi chúng tôi chèn tất cả dữ liệu từ bản ghi hiện tại, chúng tôi có thể kết thúc hàng của bảng.
        builder.EndRow();
    }

    // Chúng ta đã hoàn thành việc chèn toàn bộ dữ liệu từ DataTable, chúng ta có thể kết thúc bảng.
    builder.EndTable();

    return table;
}

Bây giờ, đã đến lúc gọi phương thức này và chèn một DataTable vào tài liệu Word.

Nhập DataTable vào Tài liệu Word trong C#

Sau đây là các bước để nhập dữ liệu từ DataTable vào tài liệu Word trong C#.

  • 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.
  • Đọc dữ liệu từ cơ sở dữ liệu/tệp vào đối tượng DataTable.
  • Gọi phương thức mà chúng ta đã viết trong phần trước và nhận Bảng trả về.
  • Đặt định dạng của bảng.
  • Lưu tệp Word bằng phương pháp Document.Save().

Mẫu mã sau đây cho biết cách chèn một DataTable vào tài liệu Word trong C#.

// Tạo một tài liệu mới.
Document doc = new Document();

// Chúng ta có thể định vị nơi chúng ta muốn chèn bảng và cũng có thể chỉ định bất kỳ định dạng bổ sung nào.
// áp dụng trên bảng là tốt.
DocumentBuilder builder = new DocumentBuilder(doc);

// Chúng tôi muốn xoay ngang trang vì chúng tôi mong đợi một bảng rộng.
doc.FirstSection.PageSetup.Orientation = Orientation.Landscape;

DataSet ds = new DataSet();
ds.ReadXml("Employees.xml");

// Truy xuất dữ liệu từ nguồn dữ liệu của chúng tôi được lưu trữ dưới dạng DataTable.
DataTable dataTable = ds.Tables[0];

// Xây dựng bảng trong tài liệu từ dữ liệu chứa trong DataTable.
Table table = ImportTableFromDataTable(builder, dataTable, true);

// Chúng ta có thể áp dụng kiểu bảng như một cách rất nhanh để áp dụng định dạng cho toàn bộ bảng.
table.StyleIdentifier = StyleIdentifier.MediumList2Accent1;
table.StyleOptions = TableStyleOptions.FirstRow | TableStyleOptions.RowBands | TableStyleOptions.LastColumn;

// Đối với bảng của chúng tôi, chúng tôi muốn xóa tiêu đề cho cột hình ảnh.
table.FirstRow.LastCell.RemoveAllChildren();

// Lưu tài liệu đầu ra.
doc.Save("Table.docx");

C# DataTable to Word Importer Library - Nhận giấy phép miễn phí

Bạn có thể nhận giấy phép tạm thời miễn phí để sử dụng Aspose.Words for .NET mà không bị giới hạn đánh giá.

Sự kết luận

Trong bài viết này, bạn đã học cách chèn dữ liệu từ DataTable vào tài liệu Word trong C#. Bạn có thể dễ dàng tích hợp mẫu mã vào ứng dụng của mình và nhập dữ liệu trực tiếp từ cơ sở dữ liệu/XML/JSON vào tài liệu Word bằng DataTable.

Thư Viện .NET Word - Đọc Thêm

Bạn có thể truy cập tài liệu của Aspose.Words for .NET để khám phá thêm về thư viện. Trong trường hợp bạn có bất kỳ câu hỏi nào, vui lòng cho chúng tôi biết qua diễn đàn của chúng tôi.

Xem thêm