Itextsharp e tabelle con totali

lunedì 31 marzo 2008 - 21.03

squilibrio Profilo | Expert

Ciao a tutti, spulciando alcuni esempi on line sono riuscito a visualizzare dei dati in una tabella all'interno di un PDF, ora però vorrei inserire, in fondo alla tabella, un totale con i valori di una colonna, come posso fare?

questo è il mio codice


int NumColumns = 12;
PdfPTable datatable = new PdfPTable(NumColumns);
datatable.HorizontalAlignment = Element.ALIGN_LEFT;
datatable.DefaultCell.Padding = 2;
float[] columnWidths = { 8, 13, 18, 15, 7, 10, 10, 10, 5, 16, 6, 6}; // percentage
datatable.SetWidths(columnWidths);
datatable.WidthPercentage = 100; // percentage
datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;

datatable.DefaultCell.BorderWidth = 1;
datatable.DefaultCell.GrayFill = 0.7f;
datatable.AddCell("Data");
datatable.AddCell("aaaa");
datatable.AddCell("vvv");
datatable.AddCell("bbb");
datatable.AddCell("5345");
datatable.AddCell("ert");
datatable.AddCell("erter");
datatable.AddCell("e3ter");
datatable.AddCell("dgdf");

datatable.HeaderRows = 1; // this is the end of the table header

for (int i = 0; i < tblaa.aa.Rows.Count; i++)
{
....

string[] row = { tblaa.aa[i].campo1.ToShortDateString(), tblaa.aa[i].campo2.ToString(), tblaa.aa[i].campo3.ToString(), tblaa.aa[i].campo4.ToString(), ....};
for (int x = 0; x <= 11; x++)
{
Phrase cell = new Phrase(row[x].ToString(), FontFactory.GetFont("Verdana", 8));
datatable.AddCell(cell);
}
}

document.Add(datatable);


Come posso aggiungere un totale ad una specifica colonna??

Grazie

freeteo Profilo | Guru

ciao,
dal tuo codice mi sembra di capire che hai a disposizione una DataTable su cui giri per fare le celle tramite ITextSharp.
A questo punto puoi usare il metodo "Compute" della classe "DataTable" che ti aiuta a fare delle operazioni, ad esempio:

//---- costruisco una tabella di esempio DataTable dt = new DataTable(); dt.Columns.Add("id",typeof(int)); dt.Columns.Add("valore",typeof(string)); for(int i =0; i< 10 ; i++) dt.Rows.Add(new object[] { i , "ciao" + i } ); foreach(DataRow row in dt.Rows) Console.WriteLine( string.Format("{0}\t{1}", row[0] , row[1] ) ); //--- nel tuo caso va fatto per ogni colonna che ti serve Console.WriteLine( "Somma => " + dt.Compute("Sum(id)" , string.Empty ).ToString() //<--- QUI );

come vedi viene fatta la somma del campo "ID", che ovviamente ha poco senso, e' solo per farti capire che quel metodo ti potrebbe tornare utile per poi andare ad aggiungere una riga di totali nel PDF.

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5