Render table from the data source
Aspose.PDF allows you to create the table with DataSource from DataSet, Data Table, arrays and IEnumerable objects using PdfLightTable class
The Table class is used to process tables. This class gives us the ability to create tables and place them in the document, using Rows and Cells . So, to create the table, you need to add the required number of rows and fill them with the appropriate number of cells.
The following example creates the table 4x10.
.NET Core 3.1
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AddTable ()
{
// The path to the documents directory
string dataDir = RunExamples . GetDataDir_AsposePdf_WorkingDocuments ();
// Create document
using ( var document = new Aspose . Pdf . Document ())
{
document . Pages . Add ();
var table = new Aspose . Pdf . Table
{
// Set column auto widths of the table
ColumnWidths = "25% 25% 25% 25%" ,
// Set cell padding
DefaultCellPadding = new Aspose . Pdf . MarginInfo ( 10 , 5 , 10 , 5 ), // Left Bottom Right Top
// Set the table border color as Green
Border = new Aspose . Pdf . BorderInfo ( Aspose . Pdf . BorderSide . All , . 5f , Aspose . Pdf . Color . Green ),
// Set the border for table cells as Black
DefaultCellBorder = new Aspose . Pdf . BorderInfo ( Aspose . Pdf . BorderSide . All , . 2f , Aspose . Pdf . Color . Green ),
};
for ( var rowCount = 0 ; rowCount < 10 ; rowCount ++)
{
// Add row to table
var row = table . Rows . Add ();
// Add table cells
for ( int i = 0 ; i < 4 ; i ++)
{
row . Cells . Add ( $"Cell ({i + 1}, {rowCount + 1})" );
}
}
// Add table object to first page of input document
document . Pages [ 1 ]. Paragraphs . Add ( table );
// Save document
document . Save ( dataDir + "AddTable_out.pdf" );
}
}
.NET 8
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AddTable ()
{
// The path to the documents directory
string dataDir = RunExamples . GetDataDir_AsposePdf_WorkingDocuments ();
// Create document
using var document = new Aspose . Pdf . Document ();
document . Pages . Add ();
var table = new Aspose . Pdf . Table
{
// Set column auto widths of the table
ColumnWidths = "25% 25% 25% 25%" ,
// Set cell padding
DefaultCellPadding = new Aspose . Pdf . MarginInfo ( 10 , 5 , 10 , 5 ), // Left Bottom Right Top
// Set the table border color as Green
Border = new Aspose . Pdf . BorderInfo ( Aspose . Pdf . BorderSide . All , . 5f , Aspose . Pdf . Color . Green ),
// Set the border for table cells as Black
DefaultCellBorder = new Aspose . Pdf . BorderInfo ( Aspose . Pdf . BorderSide . All , . 2f , Aspose . Pdf . Color . Green ),
};
for ( var rowCount = 0 ; rowCount < 10 ; rowCount ++)
{
// Add row to table
var row = table . Rows . Add ();
// Add table cells
for ( int i = 0 ; i < 4 ; i ++)
{
row . Cells . Add ( $"Cell ({i + 1}, {rowCount + 1})" );
}
}
// Add table object to first page of input document
document . Pages [ 1 ]. Paragraphs . Add ( table );
// Save document
document . Save ( dataDir + "AddTable_out.pdf" );
}
When initializing the Table object, the minimal skin settings were used:
Exporting data from an array of objects
The Table class provides methods for interacting with ADO.NET data sources - ImportDataTable and ImportDataView . The first method imports data from the DataTable, the second from the DataView.
Premising that these objects are not very convenient for working in the MVC template, we will limit ourselves to a brief example. In this example (line 50), the ImportDataTable method is called and receives as parameters a DataTable instance and additional settings like the header flag and the initial position (rows/cols) for the data output.
.NET Core 3.1
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AddTable ()
{
// Create new a PDF document
using ( var document = new Aspose . Pdf . Document
{
PageInfo = new Aspose . Pdf . PageInfo { Margin = new Aspose . Pdf . MarginInfo ( 28 , 28 , 28 , 42 ) }
})
{
var table = new Aspose . Pdf . Table
{
// Set column widths of the table
ColumnWidths = "25% 25% 25% 25%" ,
// Set cell padding
DefaultCellPadding = new Aspose . Pdf . MarginInfo ( 10 , 5 , 10 , 5 ), // Left Bottom Right Top
// Set the table border color as Green
Border = new Aspose . Pdf . BorderInfo ( Aspose . Pdf . BorderSide . All , . 5f , Aspose . Pdf . Color . Green ),
// Set the border for table cells as Black
DefaultCellBorder = new Aspose . Pdf . BorderInfo ( Aspose . Pdf . BorderSide . All , . 2f , Aspose . Pdf . 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 ( "No connection string in 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 );
// Add table object to first page of input document
document . Pages [ 1 ]. Paragraphs . Add ( table );
using ( var streamOut = new MemoryStream ())
{
// Save document
document . Save ( streamOut );
return new FileContentResult ( streamOut . ToArray (), "application/pdf" )
{
FileDownloadName = "demotable2.pdf"
};
}
}
}
.NET 8
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AddTable ()
{
// Create new a PDF document
using var document = new Aspose . Pdf . Document
{
PageInfo = new Aspose . Pdf . PageInfo { Margin = new Aspose . Pdf . MarginInfo ( 28 , 28 , 28 , 42 ) }
};
var table = new Aspose . Pdf . Table
{
// Set column widths of the table
ColumnWidths = "25% 25% 25% 25%" ,
// Set cell padding
DefaultCellPadding = new Aspose . Pdf . MarginInfo ( 10 , 5 , 10 , 5 ), // Left Bottom Right Top
// Set the table border color as Green
Border = new Aspose . Pdf . BorderInfo ( Aspose . Pdf . BorderSide . All , . 5f , Aspose . Pdf . Color . Green ),
// Set the border for table cells as Black
DefaultCellBorder = new Aspose . Pdf . BorderInfo ( Aspose . Pdf . BorderSide . All , . 2f , Aspose . Pdf . 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 ( "No connection string in 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 );
// Add table object to first page of input document
document . Pages [ 1 ]. Paragraphs . Add ( table );
using var streamOut = new MemoryStream ();
// Save document
document . Save ( streamOut );
return new FileContentResult ( streamOut . ToArray (), "application/pdf" )
{
PageInfo = new Aspose . Pdf . PageInfo { Margin = new Aspose . Pdf . MarginInfo ( 28 , 28 , 28 , 42 ) }
};
}