In questo esempio vediamo come generare un RTF con IText in cui posizioniamo una tabella generata dinamicamente, passando al metodo di creazione :
Sotto posto il codice:
- un array di Stringhe che rappresentano gli header di colonne;
- una lista di Stringhe che rappresentano i valori , e che devono essere un multiplo della size dell'array di header, esempio con 4 colonne di intestazione per avere 2 righe la size di questa lista deve essere di 8.
Sotto posto il codice:
package chart.example;
import java.awt.Color;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import com.lowagie.text.Cell;
import com.lowagie.text.Document;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Table;
import com.lowagie.text.rtf.RtfWriter2;
public class TableCreator {
public static void main(String[] args) throws Exception
{
FileOutputStream fos = new FileOutputStream("file/executive_summary.rtf");
Document d=new Document();
RtfWriter2.getInstance(d, fos );
d.open();
String[] lista=new String[]{"Lunedi","Martedi","Mercoledi","Giovedi"};
List<String> valTot=new ArrayList<String>();
valTot.add("12");
valTot.add("15");
valTot.add("16");
valTot.add("98");
valTot.add("12");
valTot.add("15");
valTot.add("16");
valTot.add("98");
valTot.add("dsfddsdsf");
valTot.add("baiaffa");
valTot.add("16");
valTot.add("98");
valTot.add("ssssss");
valTot.add("baiaffone");
valTot.add("13");
valTot.add("983");
valTot.add("dsdsdsdsds");
valTot.add("baiaffone");
valTot.add("13");
valTot.add("983");
d.add(getSimpleTable(lista, valTot));
d.close();
}
public static int myFontStyle = Font.UNDEFINED;
public static Font baseFont = new Font ( myFontStyle, 12, Font.NORMAL );
public static Font baseFontTabelleHeader=new Font ( myFontStyle, 10, Font.NORMAL );
public static Table getSimpleTable( String[] header_cells, List<String> column_cells ) throws Exception
{
Table table = new Table( header_cells.length );
if(column_cells.size()%header_cells.length!=0){
throw new IllegalArgumentException("Attenzione il numero di valori " +
"deve essere un multiplo del numero di colonne, " +
"quindi di "+header_cells.length+" " +
"il valore risulta invece "+column_cells.size());
}
table.setBorderWidth(1);
table.setPadding(2);
table.setSpacing(0);
for ( int i = 0 ; i < header_cells.length ; i++ )
{
table.addCell( getHeaderCell( header_cells[i], baseFontTabelleHeader ) );
}
for ( int i = 0 ; i < column_cells.size() ; )
{
for(int k=0;k<header_cells.length;k++){
table.addCell( getCell( column_cells.get(i), baseFont ) );
i++;
}
}
return table;
}
public static Cell getHeaderCell( String text, Font font ) throws Exception
{
Font f = new Font( font );
f.setStyle(Font.BOLD);
Cell cell = new Cell( new Paragraph( text, f ) );
cell.setHeader(true);
cell.setBackgroundColor( new Color(0xE1E1E1) );
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
return cell;
}
public static Cell getCell( String text, Font font ) throws Exception
{
Cell cell = new Cell( new Paragraph( text, font ) );
cell.setHeader(false);
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
return cell;
}
public static Cell getCenteredCell( String text, Font font ) throws Exception
{
Cell cell = new Cell( new Paragraph( text, font ) );
cell.setHeader(false);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
return cell;
}
}
Nessun commento:
Posta un commento