2015-02-05 2 views
0

Я хочу создать XWPFTable с несколькими столбцами. И я вставляю значения в номера строк, начиная с 0. Но дело в том, что содержимое первой строки добавляется к 0-й строке. Другое дело, когда я просто пишу в 1-й строке, на верхней строке. Итак, мне нужно предположить, что getRow (0) и getRow (1) указывают на самую верхнюю строку? Заранее спасибо.XWPFTable поколение

XWPFDocument doc = new XWPFDocument(); 
    XWPFTable table=doc.createTable(3,3); 
    table.getRow(0).getCell(0).setText("A"); 
    table.getRow(0).getCell(1).setText("B"); 
    table.getRow(0).getCell(2).setText("C"); 

    table.getRow(1).getCell(0).setText("one"); 
    table.getRow(1).getCell(1).setText("two"); 
    table.getRow(1).getCell(2).setText("three"); 

    table.getRow(2).getCell(0).setText("XXX"); 
    table.getRow(2).getCell(1).setText("YYYYY"); 
    table.getRow(2).getCell(2).setText("ZZZZZZ"); 

Таблица генерируемый:

Aone Btwo Cthree
XXX YYYYY Zzzzzz

ответ

0

Я попробовал ваш код, и я вижу таблицу, как это должно быть в MS Office (2010). В рендеринге OpenOffice существуют некоторые различия в макете, но они все еще верны. Это код, который вы пробовали? Какую версию POI вы используете? Какой пакет Office вы используете?

Это то, что я тестировал.

package com.ecinev.poitest; 

import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 

import org.apache.poi.xwpf.usermodel.XWPFDocument; 
import org.apache.poi.xwpf.usermodel.XWPFTable; 

public class TestPoi2 { 

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

     XWPFDocument doc = new XWPFDocument(); 

     XWPFTable table = doc.createTable(3, 3); 
     table.getRow(0).getCell(0).setText("A"); 
     table.getRow(0).getCell(1).setText("B"); 
     table.getRow(0).getCell(2).setText("C"); 

     table.getRow(1).getCell(0).setText("one"); 
     table.getRow(1).getCell(1).setText("two"); 
     table.getRow(1).getCell(2).setText("three"); 

     table.getRow(2).getCell(0).setText("XXX"); 
     table.getRow(2).getCell(1).setText("YYYYY"); 
     table.getRow(2).getCell(2).setText("ZZZZZZ"); 

     doc.write(new FileOutputStream(new File(
       "/Users/myfolder/Documents/empty.docx"))); 
    } 
} 
+0

документ сгенерирован, если он открыт в текстовом поле, он выглядит хорошо (столкнулся с такой же проблемой в открытом офисе.). Ящики, которые я использовал, - dom4j-1.6, poi-3.10-beta1, poi-ooxml-3.7-20101029, poi-ooxml-schemas и xmlbeans-2.3.0. Так что это poi 3.10 – stella

+0

Файлы Docx представляют собой основанные на xml архивы. Я бы предложил вам создать файл, содержащий запрошенную таблицу, с вашим офисным пакетом. Затем вы можете разархивировать docx и искать файл document.xml. Сравните его с тем же файлом, созданным библиотекой poi, и, возможно, вы найдете проблему. – mauros

Смежные вопросы