1. 程式人生 > >java生成Excel並存到指定路徑(簡化版本)

java生成Excel並存到指定路徑(簡化版本)

之前寫過java生成Excel,然後感覺還不夠方便使用,就重新寫了下方法,  現在只需要呼叫傳參就ok啦,  是不是很方便呢 ?

 

需要引入的jar包:

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import net.sf.json.JSONArray;

/**
     * 生成Excel 並放到指定位置
     *@param filepath 檔案路徑
     *@param filename 檔名稱
     *@param titlelist 標題名稱list 
     *@param zdlist 欄位list
     *@param datalist 資料list (這裡也可以改成List<Map<String,String>>  格式的資料)
     *@return 是否正常生成
     *@throws IOException
     *@author:
     *2018年11月24日 上午11:40:39
     * (titlelist  和  zdlist  順序要一直, 要一一對應)
     */
    public static boolean createExcel(String filepath,String filename,List<String> titlelist,List<String> zdlist,JSONArray datalist) throws IOException{
        boolean success = false;
        try {
            //建立HSSFWorkbook物件(excel的文件物件)  
            HSSFWorkbook wb = new HSSFWorkbook();  
            // 建立新的sheet物件(excel的表單)
            HSSFSheet sheet = wb.createSheet("sheet1");
            // 在sheet裡建立第一行,引數為行索引(excel的行),可以是0~65535之間的任何一個
            HSSFRow row0 = sheet.createRow(0);
            // 新增表頭
            for(int i = 0;i<titlelist.size();i++){
                row0.createCell(i).setCellValue(titlelist.get(i));
            }
            //新增表中內容
            for(int row = 0;row<datalist.size();row++){//資料行
                //建立新行
                HSSFRow newrow = sheet.createRow(row+1);//資料從第二行開始
                //獲取該行的資料
                @SuppressWarnings("unchecked")
                Map<String,String> data = (Map<String, String>) datalist.get(row);
                
                for(int col = 0;col<zdlist.size();col++){//列
                    //資料從第一列開始
                    //建立單元格並放入資料
                    newrow.createCell(col).setCellValue(data.get(zdlist.get(col)));
                }
            }
            
            //判斷是否存在目錄. 不存在則建立
            isChartPathExist(filepath);
            //輸出Excel檔案1  
            FileOutputStream output=new FileOutputStream(filepath+filename);  
            wb.write(output);//寫入磁碟  
            output.close(); 
            success = true;
        } catch (Exception e) {
            success = false;
            e.printStackTrace();
        }
        return success;
    }
    
    
    /**
     * 判斷資料夾是否存在,如果不存在則新建
     * 
     * @param dirPath 資料夾路徑
     */
    private static void isChartPathExist(String dirPath) {
        File file = new File(dirPath);
        if (!file.exists()) {
            file.mkdirs();
        }
    }

若有什麼建議, 請在下方回覆,謝謝!