本文介绍了为xlsx ApachePOI使用Java临时文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

.hi,我正在尝试创建一个临时的.xlsx文件,并使用ApachePOI对其进行写入。我正在获取用于创建工作簿的EmptyFileException。代码如下:

public class Writer{
File file;
public File Write(List<FormData> l, Class elementClass)
{

    try {//create temp fiele here
        file = File.createTempFile(elementClass.getSimpleName(),".xlsx");
    } catch (IOException ex) {
        Logger.getLogger(Writer.class.getName()).log(Level.SEVERE, null, ex);
    }
    XSSFWorkbook workbook;
    XSSFSheet sheet;
    if (file.exists()) {
        FileInputStream inputStream;
        try {
            inputStream = new FileInputStream(file);
        } catch (FileNotFoundException ex) {
            throw new AspirinException(AspirinException.Type.INTERNAL_ERROR);
        }
        try {// this line gets error//
            workbook = (XSSFWorkbook) WorkbookFactory.create(inputStream);
        } catch (IOException | InvalidFormatException | EncryptedDocumentException ex) {
            throw new AspirinException(AspirinException.Type.INTERNAL_ERROR);
        }

        //...

如果我使用真实的文件,它工作得很好。但对于临时文件,它不起作用。请帮我拿一下这个。谢谢

推荐答案

创建新文件时,首先不需要文件,只需从新工作簿开始:

Workbook wb = new XSSFWorkbook();

,然后使用API填充它。最后,您可以通过

将其写入新文件

try (OutputStream stream = new FileOutputStream(file)) {
    wb.write(stream);
}

这篇关于为xlsx ApachePOI使用Java临时文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。