zoukankan      html  css  js  c++  java
  • 【poi xlsx报错】使用POI创建xlsx无法打开

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

    这样 XSSFWorkbook 和HSSFWorkbook的区别。

      • 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格式档案的功能。

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

    代码如下:

     1 package com.it.poiTest;
     2 
     3 import java.io.FileNotFoundException;
     4 import java.io.FileOutputStream;
     5 import java.io.IOException;
     6 
     7 import org.apache.poi.ss.usermodel.Sheet;
     8 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
     9 
    10 public class CreateWorkBook {
    11     public static void main(String[] args) {
    12         //可以表示xls和xlsx格式文件的类
    13         XSSFWorkbook  workbook = new XSSFWorkbook();
    14         try {
    15             FileOutputStream out = new FileOutputStream("createWorkBook.xlsx");
    16             workbook.write(out);
    17             out.close();
    18             System.out.println("createWorkBook success");
    19         } catch (FileNotFoundException e) {
    20             e.printStackTrace();
    21         } catch (IOException e) {
    22             e.printStackTrace();
    23         }
    24         
    25         
    26     }
    27 }
    View Code

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

    代码改良如下:

     1 package com.it.poiTest;
     2 
     3 import java.io.FileNotFoundException;
     4 import java.io.FileOutputStream;
     5 import java.io.IOException;
     6 
     7 import org.apache.poi.ss.usermodel.Sheet;
     8 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
     9 
    10 public class CreateWorkBook {
    11     public static void main(String[] args) {
    12         //可以表示xls和xlsx格式文件的类
    13         XSSFWorkbook  workbook = new XSSFWorkbook();
    14         try {
    15             //新创建的xls需要新创建新的工作簿,offine默认创建的时候会默认生成三个sheet
    16             Sheet sheet = workbook.createSheet("first sheet");
    17             FileOutputStream out = new FileOutputStream("createWorkBook.xlsx");
    18             workbook.write(out);
    19             out.close();
    20             System.out.println("createWorkBook success");
    21         } catch (FileNotFoundException e) {
    22             e.printStackTrace();
    23         } catch (IOException e) {
    24             e.printStackTrace();
    25         }
    26         
    27         
    28     }
    29 }
    View Code
  • 相关阅读:
    linux基本命令之grep
    Linux在线练习网站
    MySql分表分库思路
    SqlServer触发器
    SqlServer存储过程
    Spring常用注解总结
    SpringMVC的HelloWorld
    XML基础和Web基本概念(JavaWeb片段一)
    红黑树-结点的删除(C语言实现)
    红黑树-结点的插入
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/5660320.html
Copyright © 2011-2022 走看看