簡體   English   中英

如何用JAVA增加word文件中表格的寬度

[英]How to increase width of column of table in word file by JAVA

我正在開發一個小項目,我正在用Java創建word文件,並在這個word文件中輸入一些細節。 我能夠創建word文件,並能夠輸入數據。 我還將一個表寫入word文件並輸入一些細節。

現在我想要的,我想增加特定列的寬度。

有沒有辦法做到這一點? 我正在使用Apache POI驅動程序來創建word文件並將數據寫入其中。

我使用下面的代碼:

XWPFDocument document= new XWPFDocument();
try{
FileOutputStream out = new FileOutputStream(
new File("d:\\createparagraph.docx"));

 XWPFParagraph paragraph = document.createParagraph();
     XWPFTable table = document.createTable();
     XWPFTableRow tableRowOne = table.getRow(0);
     tableRowOne.getCell(0).setText("CLientID");   
     tableRowOne.addNewTableCell().setText(txtCID.getText());
  //create second row
    XWPFTableRow tableRow2 = table.createRow();
    tableRow2.getCell(0).setText("AccountID");
    tableRow2.getCell(1).setText(txtAID.getText());
document.write(out);
out.close();
 }

此代碼工作正常並生成普通表但我想增加特定列的寬度(第2列)。

請幫忙。

據我XWPFTableXWPFTable中沒有實現列寬設置(截至POI版本3.15 final)。 所以我們必須使用底層的低級對象。

例:

import java.io.FileOutputStream;

import org.apache.poi.xwpf.usermodel.*;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;

import java.math.BigInteger;

public class CreateWordTableColumnWidth {

 public static void main(String[] args) throws Exception {

  XWPFDocument document= new XWPFDocument();

  XWPFParagraph paragraph = document.createParagraph();
  XWPFRun run=paragraph.createRun();  
  run.setText("The Body:");

  paragraph = document.createParagraph();

  XWPFTable table = document.createTable(1, 2);

  //values are in unit twentieths of a point (1/1440 of an inch)
  table.setWidth(5*1440); //should be 5 inches width

  //create CTTblGrid for this table with widths of the 2 columns. 
  //necessary for Libreoffice/Openoffice to accept the column widths.
  //first column = 2 inches width
  table.getCTTbl().addNewTblGrid().addNewGridCol().setW(BigInteger.valueOf(2*1440));
  //other columns (only one in this case) = 3 inches width
  for (int col = 1 ; col < 2; col++) {
   table.getCTTbl().getTblGrid().addNewGridCol().setW(BigInteger.valueOf(3*1440));
  }

  //set width for first column = 2 inches
  CTTblWidth tblWidth = table.getRow(0).getCell(0).getCTTc().addNewTcPr().addNewTcW();
  tblWidth.setW(BigInteger.valueOf(2*1440));
  //STTblWidth.DXA is used to specify width in twentieths of a point.
  tblWidth.setType(STTblWidth.DXA);

  //set width for second column = 3 inches
  tblWidth = table.getRow(0).getCell(1).getCTTc().addNewTcPr().addNewTcW();
  tblWidth.setW(BigInteger.valueOf(3*1440));
  tblWidth.setType(STTblWidth.DXA);

  XWPFTableRow tableRowOne = table.getRow(0);
  tableRowOne.getCell(0).setText("CLientID");   
  tableRowOne.getCell(1).setText("CID001");
  //create second row
  XWPFTableRow tableRow2 = table.createRow();
  tableRow2.getCell(0).setText("AccountID");
  tableRow2.getCell(1).setText("ACCID001");

  paragraph = document.createParagraph();

  document.write(new FileOutputStream("CreateWordTableColumnWidth.docx"));
  document.close();

 }
}

該代碼被評論以描述它的作用。 特別提到應該是Twip的特殊測量單位(二十分之一)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM