我目前正在使用iText进行.pdf生成。我的一种方法是创建,格式化和向Cell对象添加单元格,但是对于这个特定的表有许多单元格(20-30),并且该方法本身已经大大增加。
该方法的结构如下:
/*create cells*/
Cell c1 = new Cell(new Paragraph("text1", textFont));
//...and so on for 20+ cells
/*format cell with custom method formatCell()*/
formatCell(c1, false);
//...and so on for 20+ cells
/*add cells to table object*/
table1.addCell(c1);
//...and so on again for 20+ cells
有没有一种方法可以在没有addCell语句流的情况下将单元格添加到表中?
编辑:我应该提到的(道歉)是formatCell将采用一个布尔参数,该参数将在每个单元格的基础上改变
答案 0 :(得分:1)
您可以将您的单元格添加到ArrayList
,然后遍历List
。
例如:
List<Cell> cells = new ArrayList<Cell>();
cells.add(new Cell(new Paragraph("text1", textFont)));
//...and so on for 20+ cells
for(Cell cell:cells){
formatCell(cell, false);
table1.addCell(cell);
}
要创建单元格列表,您可以创建一个像这样的方法
private static List<Cell> createCells(Font textFont, String... texts){
List<Cell> cells = new ArrayList<Cell>();
for(String text: texts){
cells.add(new Cell(new Paragraph(text, textFont)));
}
}
答案 1 :(得分:1)
您可以使用List
:
final List<Cell> cells = new ArrayList<>();
/*create cells*/
cells.add(/* c1 */ new Cell(new Paragraph("text1", textFont)));
//...and so on for 20+ cells
/*format cell with custom method formatCell()*/
for (final Cell cell : cells) {
formatCell(cell, false);
}
/*add cells to table object (or use the previous loop if nothing inbetween) */
for (final Cell cell : cells) {
table1.addCell(cell);
}