如何使用Java中的Apache POI将元数据写入Excel工作簿

时间:2017-05-05 04:57:34

标签: java excel apache-poi

MetaData Excel
Expected File Properties

需要使用Apache POI将自定义数据写入excel文件。我正在使用POI 3.1.1版本jar。这是我的代码:

FileInputStream fis = new FileInputStream(sample);
workbook = new XSSFWorkbook(fis);
POIXMLProperties props = workbook.getProperties();

/* Let us set some core properties now*/
POIXMLProperties.CoreProperties coreProp = props.getCoreProperties();
coreProp.setCreator("Thinktibits"); //set document creator
coreProp.setDescription("set Metadata using Apache POI / Java");
coreProp.setCategory("Programming"); //category

/* Finally, we can set some custom Properies */
POIXMLProperties.CustomProperties custProp = props.getCustomProperties();
custProp.addProperty("Author", "Thinktibits");// String
custProp.addProperty("Year", 2014);     // Number Property
custProp.addProperty("Published", true); //Yes No Property
custProp.addProperty("Typist", "tika");
FileOutputStream fos = new FileOutputStream(sample);
workbook.write(fos);
fos.close();

任何人都可以帮助我在我的代码中出错以获得预期的自定义标签吗?

1 个答案:

答案 0 :(得分:5)

此处此代码适用于Excel 2011和XLSX(当然xlsx不需要在EXCEL中打开):

public class ApachePOI {

    public static void main(final String[] args) throws Exception {
        FileInputStream fis = new FileInputStream("C:\\Mappe1.xlsx");
        XSSFWorkbook workbook = new XSSFWorkbook(fis);
        POIXMLProperties props = workbook.getProperties();

        /* Let us set some core properties now */
        POIXMLProperties.CoreProperties coreProp = props.getCoreProperties();
        coreProp.setCreator("Thinktibits"); // set document creator
        coreProp.setDescription("set Metadata using Apache POI / Java");
        coreProp.setCategory("Programming"); // category

        /* Finally, we can set some custom Properies */
        POIXMLProperties.CustomProperties custProp = props.getCustomProperties();
        custProp.addProperty("Author", "Thinktibits");// String
        custProp.addProperty("Year", 2014); // Number Property
        custProp.addProperty("Published", true); // Yes No Property
        custProp.addProperty("Typist", "tika");
        FileOutputStream fos = new FileOutputStream("C:\\Mappe1.xlsx");
        workbook.write(fos);
        fos.close();
    }
}

作为依赖我得到了:

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.16</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.16</version>
</dependency>