当前位置: 首页 > 知识库问答 >
问题:

用Java写word tablecell,Apache POI?

程枫
2023-03-14

我有一个表格的word文档。我想使用Java在这些单元格中插入文本,并且我已经将Apache POI添加到我的项目中。

然而,我只是成功地阅读了文件。我的应用程序获取表中的所有单元格。但我不知道如何在每个单元格中插入新文本?有什么想法吗?

  String SOURCE_FILE = "template.doc";

    DocumentProcessor instance = new DocumentProcessor();
    HWPFDocument doc = null;
    try {
        doc = instance.openDocument(SOURCE_FILE);

        Range range = doc.getRange();
        TableIterator itr = new TableIterator(range);
        while(itr.hasNext()) {
            Table table = itr.next();
            for (int rowIndex = 0; rowIndex < table.numRows(); rowIndex++) {
                TableRow row = table.getRow(rowIndex);
                for (int colIndex = 0; colIndex < row.numCells(); colIndex++) {
                    TableCell cell = row.getCell(colIndex);
                    cell.getParagraph(0).text().replace("", "Hello");
                    System.out.println(cell.getParagraph(0).text());
                }
            }
        }

    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        saveDocument(doc, SOURCE_FILE);

    }
}


private HWPFDocument openDocument(String file) throws Exception {
    URL res = getClass().getClassLoader().getResource(file);
    HWPFDocument document = null;
    if (res != null) {
        document = new HWPFDocument(new POIFSFileSystem(
                new File(res.getPath())));
    }
    return document;
}

private static void saveDocument(HWPFDocument doc, String file) {
    try (FileOutputStream out = new FileOutputStream(file)) {
        doc.write(out);
        doc.close();
        System.out.println("File saved");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

共有1个答案

公冶昆杰
2023-03-14
  public class TableCreate{

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

    //Blank Document
    XWPFDocument document= new XWPFDocument();

   //Write the Document in file system
   FileOutputStream out = new FileOutputStream(
   new File("create_table.docx"));

   //create table
   XWPFTable table = document.createTable();
  //create first row
  XWPFTableRow tableRowOne = table.getRow(0);
  tableRowOne.getCell(0).setText("col one, row one");
  tableRowOne.addNewTableCell().setText("col two, row one");
  tableRowOne.addNewTableCell().setText("col three, row one");
  //create second row
  XWPFTableRow tableRowTwo = table.createRow();
  tableRowTwo.getCell(0).setText("col one, row two");
  tableRowTwo.getCell(1).setText("col two, row two");
  tableRowTwo.getCell(2).setText("col three, row two");
  //create third row
  XWPFTableRow tableRowThree = table.createRow();
  tableRowThree.getCell(0).setText("col one, row three");
  tableRowThree.getCell(1).setText("col two, row three");
  tableRowThree.getCell(2).setText("col three, row three");

   document.write(out);
   out.close();
    System.out.println("create_table.docx written successully");
   }
}

输出

 类似资料:
  • 问题内容: 有人可以指出我正确的方向,以便在Java中写入Excel文件吗?我不了解我在网上找到的链接。您能给我发送链接还是我可以遵循的任何方式? 谢谢J 问题答案: 并不是平庸,但是Apache POI可以做到。您可以在此处找到一些代码示例: http //poi.apache.org/spreadsheet/examples.html

  • 问题内容: 嗨,我正在尝试将字符串写入文本文件,但是有一个小问题。我在该站点上其他问题的帮助下完成了代码,但是当我尝试向文本文件中添加字符串时,它将擦除该文本文件中的所有内容并写入输入。但我希望它转到下一行并编写。我无法解决。我将不胜感激任何帮助。谢谢.. 问题答案: (未试用)您是否尝试过JavaDoc中提到的方法?

  • 问题内容: 我正在尝试根据从《 AI游戏程序员的技术》一书中选取的技术编写一种遗传算法,该技术对种群的基因使用二进制编码和适应性比例选择(也称为轮盘选择)。在程序内以二维数组随机生成。 最近,我遇到了一段伪代码并尝试实现它,但是遇到了一些我需要做的事情方面的问题。我检查了许多书籍和一些开源代码,但仍在努力取得进展。我了解我必须获得总体适应度的总和,在总和与零之间选择一个随机数,然后如果该数字大于父

  • 问题内容: Sun 用什么语言写? 问题答案: Sun实际上有多个JVM。所述热点JVM在C ++主要被写,因为热点在很大程度上基于所述Animorphic Smalltalk的VM被用C ++编写 。 比HotSpot更有趣的是IMHO Maxine Research VM ,它几乎完全用Java编写。

  • 问题内容: 我尝试了以下代码来完成读取和写入tiff图像的任务: 但是,当我运行代码时,出现以下错误消息: 知道如何解决这个问题吗? 问题答案: 读取TIFF并输出BMP的最简单方法是使用ImageIO类: 要使此功能正常工作,您唯一需要做的另一件事是确保已将JAI ImageIO JAR添加到类路径中,因为如果没有此库中的插件,JRE不会处理BMP和TIFF。 如果由于某种原因不能使用JAI I

  • 问题内容: 我简要阅读了有关Maxine的信息,这是一个用Java编写的开源JVM实现。这对我来说听起来很圆。如果java要求运行虚拟机,那么如何用Java编写虚拟机本身(VM代码是否需要运行VM的虚拟机,依此类推?)。 编辑 :好的,所以我看到我忽略了Java不必在VM中运行的事实。那如何解释如何用LISP编写LISP编译器呢?还是这完全是一个新问题? 问题答案: 最初,您认为Java需要虚拟机

  • 问题内容: 我正在处理以下代码: 它给出以下输出: 现在,我想将生成的输出()写入硬盘上的XML文件。我该怎么做? 问题答案: 使用(或)代替构造您的。

  • 问题内容: 我想创建一个.pdf文件,然后用彩色写入。通过控制台,我已经能够使用ansi转义序列做到这一点。例如,如果我想红,我把”\u001b[31m”我的字符串的前面,”\u001b[0m”以删除所有格式。您可以更改背景和前景。我为此设计了自己的有用的类,以帮助显示信息,甚至还用于我仍在从事的基于文本的国际象棋项目。 但是,现在我想用彩色写入文件。我想做与ansi转义类似的事情,但可能不会。