【问题标题】:How to modify existing Excel workbook with Java如何使用 Java 修改现有 Excel 工作簿
【发布时间】:2019-09-19 08:46:55
【问题描述】:

我的目标是打开一个现有的 Excel 文件 (xlsx)

  1. 添加并命名新工作表
  2. 添加包含数据的行(多列)
  3. 给列标题

这似乎是一次真正的冒险。我现在在浏览器中打开了 30 个选项卡来解决一个问题,然后解决另一个问题。

我将以下 jar 添加到我的 java 项目中

  • commons-collections4-4.1.jar
  • commons-compress-1.19.jar
  • dom4j-1.6.1.jar
  • ooxml-schemas-1.1.jar
  • poi-4.0.1.jar
  • poi-ooxml-4.0.1.jar
  • poi-ooxml-schemas-4.0.1.jar
  • xmlbeans-2.6.0.jar

我将 poi-4.1.0 导入到我的项目中。现在我的项目中有大量文件,但仍然出现错误。

最后一个我无法解决的是:

org.etsi.uri.x01903.v13.SignaturePolicyIdType 类型无法解析。它是从所需的 .class 文件 XAdESSignatureFacet.java 中间接引用的

Resource: XAdESSignatureFacet.java

谁能给出一个有效的java示例。无法相信这必须如此复杂。

提前致谢

【问题讨论】:

    标签: java excel


    【解决方案1】:

    通过重新创建我的 java 项目的属性解决了这个问题。

    Java 构建路径 - 库:

    • commons-codec-1.12.jar
    • commons-collections4-4.3.jar
    • commons-compress-1.19.jar
    • commons-io-1.3.jar
    • commons-math3-3.6.1.jar
    • curvesapi-1.06.jar
    • dom4j-1.6.1.jar
    • poi-4.1.0.jar
    • poi-examples-4.1.0.jar
    • poi-ooxml-4.1.0.jar
    • poi-ooxml-schemas-4.1.0.jar
    • poi-scratchpad-4.1.0.jar
    • xmlbeans-3.1.0.jar

    JRE 系统库 [jre1.8.0_221]

    Java 代码:

    XSSFWorkbook workbook;
    workbook = getWorkBook("path to existing workbook", new XSSFWorkbook());
    XSSFSheet spreadsheet;
    spreadsheet = workbook.cloneSheet("the index number of the sheet to be cloned", "the name of the sheet you want to create");
    
    FileOutputStream outputStream;
        try {
            outputStream = new FileOutputStream("excel file directory path");
            try {
                workbook.write(outputStream);
                workbook.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    

    您可以实现所有必要的东西来满足您的需求。例外情况等 我根据 CSV 文件中提供的数据以合理的方式填充了行和列 检查和验证。

    Java 代码示例:

    Row row; 
    Cell cell;
    row = spreadsheet.createRow("row index");
    cell = row.createCell("column index");
    cell.setCellValue("String");
    

    通过此实现,我实现了上述目标,但目标 3 已变得多余,因为要克隆的工作表已经继承了列标题。

    感谢您的回复

    【讨论】:

      【解决方案2】:

      这里有一个全面的指南:link

      【讨论】:

      • 应避免仅链接答案,可以更改链接或删除其内容。
      猜你喜欢
      • 1970-01-01
      • 2016-03-14
      • 2017-11-13
      • 1970-01-01
      • 2018-08-31
      • 2017-10-26
      • 2017-11-09
      • 2017-12-26
      • 1970-01-01
      相关资源
      最近更新 更多