java生成Excel並存到指定路徑(簡化版本)
阿新 • • 發佈:2018-11-24
之前寫過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(); } }
若有什麼建議, 請在下方回覆,謝謝!