表格内容同时列合并和行合并
示例代码
package test.create.c04;
import iofd.layout.OfdDocument;
import iofd.layout.block.Paragraph;
import iofd.layout.block.Table;
import iofd.layout.element.table.Cell;
import iofd.layout.element.table.HeadCell;
import iofd.layout.element.table.TableRow;
import java.util.ArrayList;
import java.util.List;
import test.create.TestDocUtil;
public class C0407TableContentColumnAndRowSpan {
public static void main(String[] args) throws Throwable {
C0407TableContentColumnAndRowSpan o = new C0407TableContentColumnAndRowSpan();
o.done();
}
private void done() throws Throwable {
String clzName = this.getClass().getSimpleName();
System.out.println(clzName + " begin");
OfdDocument doc = new OfdDocument();
String s = "这是一个插入表格的示例,这个表格内容有同时列合并和行合并的情况。";
Paragraph p = new Paragraph();
p.add(s);
doc.add(p);
TableRow row0 = new TableRow(0);
List head0 = new ArrayList<>();
HeadCell c = new HeadCell(0, 0, 0, 1);
c.add("标题一");
head0.add(c);
c = new HeadCell(0, 1, 1, 0);
c.add("标题二");
head0.add(c);
c = new HeadCell(0, 3, 0, 1);
c.add("标题三");
head0.add(c);
row0.setCellList(head0);
TableRow row1 = new TableRow(1);
List head1 = new ArrayList<>();
c = new HeadCell(1, 1);
c.add("子标题一");
head1.add(c);
c = new HeadCell(1, 2);
c.add("子标题二");
head1.add(c);
row1.setCellList(head1);
List head = new ArrayList<>();
head.add(row0);
head.add(row1);
List body = createBody();
Table table = Table.createTable(head, body);
doc.add(table);
String fileName = TestDocUtil.getOfdFilePath(this.getClass());
doc.save(fileName);
System.out.println(clzName + " end");
}
private List createBody() {
List ret = new ArrayList<>();
for (int i = 0; i < 100; i++) {
TableRow row = new TableRow(i);
List cellList = new ArrayList<>();
for(int j = 0; j < 4; j++) {
Cell c = new Cell(i, j);
if(j == 0) {
if(i % 4 == 0) {
/*
* 合并三行
* */
c = new Cell(i, j, 0, 3);
} else {
/*
* 其他的第0行已经被合并单元格了,所以不需要在进行设置
* */
continue;
}
} else {
if(j == 1) {
if(i % 2 == 0) {
/*
* 合并第二列
* 合并下方一行
* */
c = new Cell(i, j, 1, 1);
} else {
/*
* 下面的一行也不存在了
* */
continue;
}
} else if(j == 2) {
/*
* 第 三列不存在啦
* */
continue;
} else {
c = new Cell(i, j);
}
}
c.add("[" + i + "," + j + "]");
cellList.add(c);
}
row.setCellList(cellList);
ret.add(row);
}
return ret;
}
}
| | |