POI操作Excel的怪異問題

來源:互聯網
上載者:User

這兩天用POI產生Excel,看了看頭兒給的例子就動手開始寫,寫的還算順利,資料可以匯出到Excel中了,而接下來的布局就很麻煩了,所有的

操作都需要用程式來控制,寫了一會我覺得這樣不行,應該弄一個模板,於是我把Excel的格式提取出來,放到一個新的Excel檔案中,每次都

開啟這個模板檔案,從這個模板檔案裡邊插入資料,只是在儲存的時候把資料儲存到另外一個Excel檔案中,這樣就可以省去了不少布局的麻煩

。當然這也存在些問題:
如果有多個sheet怎麼辦?答:如果需要多個sheet可以在模板中多建立幾個模板sheet。
如果我建立的好多模板sheet但是有用不了那麼多呢?答:可以在儲存之前把多於的sheet刪除掉。
上面兩個問題都解決了,按說應該是沒有問題了,但是新的問題出現了,excel可以產生,但是開啟後sheet不能切換,一切換就報錯。查了半

天不知是什麼原因,找頭兒給我看,他看了會跟我說代碼沒有問題,問題是Excel模板必須把最後添加的sheet設定成選中狀態,不能是別的

sheet。比如你有從sheet1到sheet9這九個sheet所以你就要把sheet9設定成選中然後儲存。這樣根據模板到處的excle才沒有問題。

public static void createExcelFromTemplate(String templateFile, String saveFile, ArrayList excelData)
{
    // 讀模數板Excel
    HSSFWorkbook tempWorkBook = new HSSFWorkbook(new FileInputStream(templateFile));

    //處理excel
    //

    tempWorkBook = deleteSheet(tempWorkBook);
    //儲存Excel
    generateExcel(tempWorkBook, saveFile);
}
    /**//*由HSSFWorkbook產生Excel文檔
   *
   * */
    public static void generateExcel(HSSFWorkbook wb, String saveFile) {
        try {// 建立一輸出檔案流
            FileOutputStream fOut = new FileOutputStream(saveFile);
            // 把相應的Excel 活頁簿存檔
            wb.write(fOut);
            fOut.flush();
            // 操作結束,關閉檔案
            fOut.close();
        } catch (Exception e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
    }

    //刪除多於的Sheet
    public static HSSFWorkbook deleteSheet(HSSFWorkbook wb)    {
        
        int totalSheets = wb.getNumberOfSheets() - 1;
        while (0 <= totalSheets) {
            if (wb.getSheetName(totalSheets).lastIndexOf("Sheet") == 0) {
                wb.removeSheetAt(totalSheets);
                totalSheets--;
            } else {
                totalSheets--;
            }
        }
       return wb;
    }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.