Java使用POI生成Excel文件后打不開的問題


    在實際的工作中,有時會遇到獲取數據后需要存入Excel文件的情況。但是,在生成Excel文件后,發現無法正常打開該文件。

    例如:以當前的時間點為文件名,新生成一個Excel文件。先來看看下面一段代碼。

public class createExcel {public static void main(String[] args) throws IOException {
        Date now=new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
        String localname=dateFormat.format(now);
        String xlsxPath = "F:\\20190507\\"+ localname + ".xlsx";
        Workbook workBook = new XSSFWorkbook();
        OutputStream fos = null;
        try {
            fos = new FileOutputStream(xlsxPath);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        workBook.write(fos);
        fos.close();
    }
}

     有經驗的同學看出什么問題來了嗎?

  這里在相應的路徑下會生成Excel文件。但是,雙擊打開的時候,會出現下面的情形。

 

 

 

     導致這個問題的原因是什么呢?

     我們回過頭來再看看之前的代碼。好像是少了點什么吧。

     我們實際在電腦中點擊右鍵新生成一個Excel文件的時候,這個Excel文件會默認生成3個Sheet。而上面我們使用Java代碼來生成Excel的時候,沒有新建立Sheet的對象。這樣,這個Excel文件中就是沒有Sheet的。雙擊打開的時候就會報這個錯誤。

      實際上,我們只要在上面的代碼中,增加一個Sheet的對象,就可以正常打開Excel了。

public static void main(String[] args) throws IOException {
       Date now=new Date();
       SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
       String localname=dateFormat.format(now);
       String xlsxPath = "F:\\20190507\\"+ localname + ".xlsx";
       Workbook workBook = new XSSFWorkbook();
       OutputStream fos = null;
       try {
     //增加一個Sheet的對象 Sheet sheet
= workBook.createSheet("sheet1"); fos = new FileOutputStream(xlsxPath); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } workBook.write(fos); fos.close(); } }

    這樣,即可正常打開Excel了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM