使用POI创建Excel无法打开

如果使用的XSSFWorkbook创建的xls,打开的时候会有这样的提示:

使用POI创建Excel无法打开_第1张图片

这样 XSSFWorkbook 和HSSFWorkbook的区别。

 

  •  

    使用POI创建一个新的xlsx,提示创建成功,但是打开xlsx文件的时候,会报错打不开

    使用POI创建Excel无法打开_第2张图片

    使用POI创建Excel无法打开_第3张图片

    代码如下:

     

    • HSSF - 提供读写Microsoft Excel XLS格式档案的功能。

    • XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能。

    • HWPF - 提供读写Microsoft Word DOC97格式档案的功能。

    • XWPF - 提供读写Microsoft Word DOC2003格式档案的功能。

    • HSLF - 提供读写Microsoft PowerPoint格式档案的功能。

    • HDGF - 提供读Microsoft Visio格式档案的功能。

    • HPBF - 提供读Microsoft Publisher格式档案的功能。

    • HSMF - 提供读Microsoft Outlook格式档案的功能。

    package com.it.poiTest;

    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;

    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;

    public class CreateWorkBook {
        public static void main(String[] args) {
            //可以表示xls和xlsx格式文件的类
            XSSFWorkbook  workbook = new XSSFWorkbook();
            try {
                FileOutputStream out = new FileOutputStream("createWorkBook.xlsx");
                workbook.write(out);
                out.close();
                System.out.println("createWorkBook success");
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }        
        }
    }

报错是因为,微软offine自己创建一个新的xlsx的时候,会默认的创建三个新的sheet,工作簿.而我们使用程序创建的xlsx默认不会,因此需要我们自己新建的时候,也创建一个sheet,这样就不会错了。

代码改良如下:

package com.it.poiTest;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class CreateWorkBook {
    public static void main(String[] args) {
        //可以表示xls和xlsx格式文件的类
        XSSFWorkbook  workbook = new XSSFWorkbook();
        try {
            //新创建的xls需要新创建新的工作簿,offine默认创建的时候会默认生成三个sheet
            Sheet sheet = workbook.createSheet("first sheet");
            FileOutputStream out = new FileOutputStream("createWorkBook.xlsx");
            workbook.write(out);
            out.close();
            System.out.println("createWorkBook success");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }        
    }
}

 

你可能感兴趣的:(使用POI创建Excel无法打开)