/**
* 導出Excel
* @param request
* @param
* @return
*/
@RequestMapping(value = "/jsp/map/導出.do", method = RequestMethod.POST)
@ResponseBody
public String sxdcjgghbToExcel(HttpServletRequest request,
HttpServletResponse response,
@RequestParam("zzdwdm") String zzdwdm,
@RequestParam("outType") String outType) {
try {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
//開始傳入數據
// Map<String,Object> map = new HashMap<String,Object>();
//生成excel的簡單的類
XLSTransformer transformer = new XLSTransformer();
String modelExl = "";
//獲取模板路徑
modelExl = request.getSession().getServletContext().getRealPath("模板文件夾")+"\\"+xjzzdwqc;
//模板的本地地址
String templateFileName = "";
templateFileName = modelExl+"\\文件.xls";
//讀取進來
FileInputStream is = new FileInputStream(templateFileName);
String excels = request.getSession().getServletContext().getRealPath("excels");
String destFileName = excels+"\\"+nh.get(0).getZzdwqc()+"文件夾\\";
File file = new File(excels+"\\"+nh.get(0).getZzdwqc()+"文件夾");
//判斷文件是否存在存在刪除用到公共方法
if (file.exists()) {
deleteAll(file);
file.mkdirs();
}else{
file.mkdirs();
}
//sheet表的名字
List<String> listSheetNames = new ArrayList<String>();
//加載數據
ArrayList<TdcbJyqQqTzdjXx_NH> t1 = new ArrayList<TdcbJyqQqTzdjXx_NH>();
for(int x = 0;x<nh.size();x++){
t1.add(nh.get(x));
//System.out.println(nh.get(x).getCbfXM()+nh.get(x).getCbfBH());
listSheetNames.add(nh.get(x).getCbfXM()+nh.get(x).getCbfBH());
}
//記得貌似沒用(待議)
// map.put("nh", t1);
//固定格式 is-模板 t1-數據 listSheetNames-sheet表名字 nh-在文件取得別名nh.獲取 HashMap以map存儲
Workbook workbook = transformer.transformMultipleSheetsList(is, t1, listSheetNames, "nh", new HashMap(), 0);
HSSFSheet fromsheet = (HSSFSheet) workbook.getSheetAt(0);
//是否合併單元格
/* for(int s=0;s<workbook.getNumberOfSheets();s++){
workbook.getSheetAt(s).setMargin(HSSFSheet.TopMargin,fromsheet.getMargin(HSSFSheet.TopMargin));
workbook.getSheetAt(s).setMargin(HSSFSheet.BottomMargin,fromsheet.getMargin(HSSFSheet.BottomMargin));
workbook.getSheetAt(s).setMargin(HSSFSheet.LeftMargin,fromsheet.getMargin(HSSFSheet.LeftMargin));
workbook.getSheetAt(s).setMargin(HSSFSheet.RightMargin,fromsheet.getMargin(HSSFSheet.RightMargin));
for(int w=0;w<8;w++){
workbook.getSheetAt(s).setColumnWidth(w,workbook.getSheetAt(0).getColumnWidth(w));
}
}*/
//輸出文件
OutputStream os = new BufferedOutputStream(new FileOutputStream(excels+"\\"+"文件夾\\"+"文件.xls"));
workbook.write(os);
os.flush();
os.close();
is.close();
//清除數據
// map.remove("nh");
// map.clear();
// for(int i = 0;i<nh.size();i++){
// map.put("nh", nh.get(i));
// transformer.transformXLS(templateFileName, map, destFileName+nh.get(i).getCbfBH()+nh.get(i).getCbfXM()+".xls");
// map.remove("nh");
// }
} catch (Exception e) {
e.printStackTrace();
return "IoError";
}
}
java使用 freemarker 模板生成一個excel文件多個sheet
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.