您的位置:首页 > 编程语言 > Java开发

java使用 freemarker 模板生成一个excel文件多个sheet

2016-08-05 18:53 841 查看
/**
* 导出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