Отображение таблицы из источника данных
Aspose.PDF позволяет вам создавать таблицу с источником данных из DataSet, Data Table, массивов и объектов IEnumerable с использованием класса PdfLightTable.
Класс Table используется для обработки таблиц. Этот класс дает нам возможность создавать таблицы и размещать их в документе, используя Rows и Cells . Таким образом, чтобы создать таблицу, вам нужно добавить необходимое количество строк и заполнить их соответствующим количеством ячеек.
Следующий пример создает таблицу 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
var dataDir = RunExamples . GetDataDir_AsposePdf_WorkingDocuments ();
// Create PDF document
using ( var document = new Aspose . Pdf . Document ())
{
// Add page
var page = 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
page . Paragraphs . Add ( table );
// Save PDF 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
var dataDir = RunExamples . GetDataDir_AsposePdf_WorkingDocuments ();
// Create PDF document
using var document = new Aspose . Pdf . Document ();
// Add page
var page = 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
page . Paragraphs . Add ( table );
// Save PDF document
document . Save ( dataDir + "AddTable_out.pdf" );
}
При инициализации объекта Table использовались минимальные настройки:
Экспорт данных из массива объектов
Класс Table предоставляет методы для взаимодействия с источниками данных ADO.NET - ImportDataTable и ImportDataView . Первый метод импортирует данные из DataTable, второй - из DataView. Предполагая, что эти объекты не очень удобны для работы в шаблоне MVC, мы ограничимся кратким примером. В этом примере (строка 50) вызывается метод ImportDataTable и получает в качестве параметров экземпляр DataTable и дополнительные настройки, такие как флаг заголовка и начальная позиция (строки/столбцы) для вывода данных.
.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 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 PDF 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 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 PDF 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 ) }
};
}