Управление высотой строки таблицы для документа в точке - PullRequest
2 голосов
/ 14 июля 2011

Я пытаюсь нарисовать таблицу в poi, используя компонент XWPF, используя следующий код:

     // InputStream in= Temp.class.getResourceAsStream("Sample.docx");

      XWPFDocument doc = new XWPFDocument();

      XWPFTable table=doc.createTable(2,2);

     //  CTDecimalNumber rowSize = table.getCTTbl().getTblPr().getTblStyleRowBandSize();
      // rowSize.setVal(new BigInteger("10"));
     // table.getRow(1).setHeight(0);
      table.getRow(0).getCell(0).setText("Row-0-Cell-0");
      table.getRow(0).getCell(1).setText("Row-0-Cell-1");
      table.getRow(1).getCell(0).setText("Row-1-Cell-0");
      table.getRow(1).getCell(1).setText("Row-1-Cell-1");

      FileOutputStream out = new FileOutputStream("simpleTable.docx");
      doc.write(out);
      out.close();

Он правильно рисует таблицу, но высота ячеек слишком велика, и ширина также не падает должным образом вместо.Я видел в примечании, что таблица должна автоматически соответствовать в соответствии с содержанием.Попробовал пару вещей, которые выглядят следующим образом:

  • Попытался установить высоту, как показано в приведенном выше коде, но это не сработало.
  • Попытка чтения существующего документа, как показано в коде с комментариями inputtream.Это дало исключение, которое не могло прочитать файл poi-ooxml.
  • Пробовал с использованием TblStyleRowBandSize, но всегда остается нулевым.Не знаете, как создать новый экземпляр CTDecimalNumber или TblStyleRowBandSize

, заранее спасибо.

Еще несколько идей: когда я создаю пустую таблицу и добавляю строки и столбцы с помощью create, он работает нормально и не вставляет символ форматирования.Но создание пустой таблицы приводит к созданию ячейки в начале, и я все еще пытаюсь найти способ удалить этот первый столбец.Новый код

   XWPFTable table=doc.createTable();

    XWPFTableRow row1 =  table.createRow();
    row1.createCell().setText("Row-0-Cell-0");
    row1.createCell().setText("Row-0-Cell-1");
    XWPFTableRow row2 =  table.createRow();
    row2.createCell().setText("Row-1-Cell-0");
    row2.createCell().setText("Row-1-Cell-1");

1 Ответ

0 голосов
/ 14 июля 2011

Я не уверен в большинстве ваших запросов, но могу помочь с последним, вам понадобится что-то вроде:

    if(! table.getTblPr().isSetTblStyleRowBandSize()) {
       table.getTblPr().addNewTblStyleRowBandSize();
    }
    System.out.println("Was " + table.getTblPr().getTblStyleRowBandSize().getVal());
    table.getTblPr().getTblStyleRowBandSize().setVal(new BigInteger("12345"));
    System.out.println("Now " + table.getTblPr().getTblStyleRowBandSize().getVal());
...