poi でテーブルを作成するのは非常に簡単でしたが、チュートリアルが非常に限られており、docx ファイルを生成する際にテーブルに単純な結合セルを作成できるチュートリアルが見つかりません。
質問する
14208 次
3 に答える
8
テーブル、テーブル内の行、および行内のセルを作成した場合は、セル プロパティに gridSpan を追加できます。
if (cell.getCTTc().getTcPr() == null) cell.getCTTc().addNewTcPr();
if (cell.getCTTc().getTcPr().getGridSpan() == null) cell.getCTTc().getTcPr().addNewGridSpan();
cell.getCTTc().getTcPr().getGridSpan().setVal(2);
注: セルは org.apache.poi.xwpf.usermodel.XWPFTableCell です。
于 2013-08-28T14:00:15.297 に答える
7
水平方向/垂直方向にマージするには、2 つの CTHMerge を作成し、setVal を使用する必要があります。
- 残りのセル用の 1 つ (STMerge.RESTART)。
- 結合されたセルの 2 つ目 (STMerge.CONTINUE)。
a) 2x2 テーブルの水平結合の例 (例の画像) :
| | | | | | --> |___________ |
| | | | | | --> | ____________|
// First Row
CTHMerge hMerge = CTHMerge.Factory.newInstance();
hMerge.setVal(STMerge.RESTART);
table.getRow(0).getCell(0).getCTTc().getTcPr().setHMerge(hMerge);
table.getRow(1).getCell(0).getCTTc().getTcPr().setHMerge(hMerge);
// Secound Row cell will be merged/"deleted"
CTHMerge hMerge1 = CTHMerge.Factory.newInstance();
hMerge1.setVal(STMerge.CONTINUE);
table.getRow(0).getCell(1).getCTTc().getTcPr().setHMerge(hMerge1);
table.getRow(1).getCell(1).getCTTc().getTcPr().setHMerge(hMerge1);
b)垂直結合の例 (例の画像)
// First Row
CTVMerge vmerge = CTVMerge.Factory.newInstance();
vmerge.setVal(STMerge.RESTART);
table.getRow(0).getCell(0).getCTTc().getTcPr().setVMerge(vmerge);
table.getRow(0).getCell(1).getCTTc().getTcPr().setVMerge(vmerge);
// Secound Row cell will be merged
CTVMerge vmerge1 = CTVMerge.Factory.newInstance();
vmerge1.setVal(STMerge.CONTINUE);
table.getRow(1).getCell(0).getCTTc().getTcPr().setVMerge(vmerge1);
table.getRow(1).getCell(1).getCTTc().getTcPr().setVMerge(vmerge1);
于 2016-12-15T23:10:19.813 に答える