데이터 소스에서 테이블 렌더링

Aspose.PDF를 사용하면 PdfLightTable 클래스를 사용하여 DataSet, 데이터 테이블, 배열 및 IEnumerable 객체에서 데이터 소스와 함께 테이블을 생성할 수 있습니다.

테이블 클래스는 테이블을 처리하는 데 사용됩니다. 이 클래스는 을 사용하여 문서에 테이블을 생성하고 배치할 수 있는 기능을 제공합니다. 따라서 테이블을 생성하려면 필요한 수의 행을 추가하고 적절한 수의 셀로 채워야 합니다.

다음 예제는 4x10 테이블을 생성합니다.

var table = new Table
    {
        // 테이블의 열 자동 너비 설정
        ColumnWidths = "25% 25% 25% 25%",
        // 셀 패딩 설정
        DefaultCellPadding = new MarginInfo(10, 5, 10, 5), // 왼쪽 아래 오른쪽 위
        // 테이블 테두리 색상을 녹색으로 설정
        Border = new BorderInfo(BorderSide.All, .5f, Color.Green),
        // 테이블 셀의 테두리를 검정색으로 설정
        DefaultCellBorder = new BorderInfo(BorderSide.All, .2f, Color.Green),
    };
    for (var rowCount = 0; rowCount < 10; rowCount++)
    {
        // 테이블에 행 추가
        var row = table.Rows.Add();
        // 테이블 셀 추가
        for (int i = 0; i < 4; i++)
        {
            row.Cells.Add($"Cell ({i+1}, {rowCount +1})");
        }
    }
    // 입력 문서의 첫 페이지에 테이블 객체 추가
    document.Pages[1].Paragraphs.Add(table);

Table 객체를 초기화할 때 최소한의 스킨 설정을 사용했습니다:

객체 배열에서 데이터 내보내기

Table 클래스는 ADO.NET 데이터 소스와 상호 작용하기 위한 메소드를 제공합니다 - ImportDataTableImportDataView.

이 객체들이 MVC 템플릿에서 작업하는 데 편리하지 않다는 전제 하에, 우리는 간단한 예제로 제한할 것입니다. 이 예제에서 (50번째 줄) ImportDataTable 메서드가 호출되며 매개변수로 DataTable 인스턴스와 헤더 플래그 및 데이터 출력을 위한 초기 위치(행/열)와 같은 추가 설정을 받습니다.

// PDF 문서 새로 생성
var document = new Document
{
    PageInfo = new PageInfo { Margin = new MarginInfo(28, 28, 28, 42) }
};

var pdfPage = document.Pages.Add();

// 보고서 제목을 위한 TextFragment의 새 인스턴스 초기화
var textFragment = new TextFragment(reportTitle1);
Table table = new Table
{
    // 테이블의 열 너비 설정
    ColumnWidths = "25% 25% 25% 25%",
    // 셀 패딩 설정
    DefaultCellPadding = new MarginInfo(10, 5, 10, 5), // 왼쪽 아래 오른쪽 위
    // 테이블 테두리 색상을 녹색으로 설정
    Border = new BorderInfo(BorderSide.All, .5f, Color.Green),
    // 테이블 셀의 테두리를 검정색으로 설정
    DefaultCellBorder = new BorderInfo(BorderSide.All, .2f, Color.Green),
};

var configuration = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("config.json", false)
    .Build();

var connectionString = configuration.GetSection("connectionString").Value;

if (string.IsNullOrEmpty(connectionString))
    throw new ArgumentException("config.json에 연결 문자열이 없습니다.");

var resultTable = new DataTable();

using (var conn = new SqlConnection(connectionString))
{
    const string sql = "SELECT * FROM Tennats";
    using (var cmd = new SqlCommand(sql, conn))
    {
        using (var adapter = new SqlDataAdapter(cmd))
        {
            adapter.Fill(resultTable);
        }
    }
}

table.ImportDataTable(resultTable,true,1,1);

// 문서의 첫 페이지에 테이블 객체 추가
document.Pages[1].Paragraphs.Add(table);
using (var streamOut = new MemoryStream())
{
    document.Save(streamOut);
    return new FileContentResult(streamOut.ToArray(), "application/pdf")
    {
        FileDownloadName = "demotable2.pdf"
    };
}