データソースからテーブルをレンダリング
Contents
[
Hide
]
Aspose.PDFを使用すると、PdfLightTableクラスを使用してDataSet、DataTable、配列、およびIEnumerableオブジェクトからDataSourceを持つテーブルを作成できます。
Table classは、テーブルを処理するために使用されます。このクラスにより、テーブルを作成してドキュメントに配置することができます。これには、RowsとCellsを使用します。したがって、テーブルを作成するには、必要な数の行を追加し、適切な数のセルで埋める必要があります。
次の例では、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オブジェクトを初期化する際には、最小限のスキン設定が使用されました:
- ColumnWidths - 列の幅(デフォルト);
- DefaultCellPadding - テーブルセルのデフォルトのフィールド;
- Border - テーブル枠の属性(スタイル、厚さ、色);
- DefaultCellBorder - セル枠の属性(スタイル、厚さ、色)。
オブジェクトの配列からのデータのエクスポート
Tableクラスは、ADO.NETデータソースとのやり取りを可能にするメソッドを提供しています - ImportDataTable および ImportDataView。
これらのオブジェクトが 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"
};
}