笔记:Java后端 Excel导出表格
public ReturnMsg derivedForm(JSONObject record){
ReturnMsg msg=new ReturnMsg();
Map<Object,String> map=new HashMap<Object,String>();
String sw=BeforeTheSuffix.Prefix;
long node_id = record.getLong("nodeId");
Map nodeByNodeIdAndNodeName = pageDesignDao.getNodeByNodeId(node_id);
map.put("node_name",captureName(Pinyin4jUtil.toPinyin(nodeByNodeIdAndNodeName.get("node_name").toString())));
//获取字段
String str=record.getString("datafield");
//取出字段放入数组
String[] strs=str.split(",");
//声明数组变量 初始化位数为取出字段的位数
String[] datas= new String[strs.length];
//将取出的字段数组遍历出来 每个字段加前缀 然后在重新存进新的数组变量中
for(int i=0;i<strs.length;i++) {
datas[i]=sw+strs[i];
}
//将数组转换为字符串
String datafield=StringUtils.join(datas,",");
map.put("datafield", datafield);
//查出的数据放进集合
List<Map> listMap=pageDesignDao.derivedForm(map);
//生成Excel
File fileExcel =new File(HostConstants.FILE_PATH+"Excel");
//如果文件夹不存在则创建
if (!fileExcel.exists() && !fileExcel.isDirectory()) {
fileExcel.mkdir();
}
File file = new File(HostConstants.FILE_PATH+"Excel"+"/template1.xls");
FileOutputStream fileOutputStream=null;
try {
fileOutputStream = new FileOutputStream(file);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
//HSSFWorkbook生成Excel org.apache.poi
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Sheet1");
HSSFCellStyle cellStyle = workbook.createCellStyle();
HSSFRow row = sheet.createRow(0);
row.setHeightInPoints(30); // 设置行的高度
//将字段遍历出来为字段起别名作为表格的标题
for(int x=0;x<datas.length;x++) {
if(datas[x].equals("swprefixyonghu")) {
row.createCell(x).setCellValue("用户");
}
if(datas[x].equals("swprefixjingyan")) {
row.createCell(x).setCellValue("禁言");
}
if(datas[x].equals("swprefixshijianw")) {
row.createCell(x).setCellValue("时间");
}
}
//将动态查询出的数据遍历出来重新放进map中
for(int i = 0;i < listMap.size();i++)
{
row = sheet.createRow(i + 1);
Map<String,Object> maps = listMap.get(i);
//遍历出字段将字段的记录数据放入表格中
for(int j=0;j<datas.length;j++) {
String authorStr = maps.get(datas[j]).toString();
row.createCell(j).setCellValue(authorStr);
}
}
workbook.setActiveSheet(0);
try {
workbook.write(fileOutputStream);
fileOutputStream.close();
msg.setMsg(listMap);
msg.setStatus(Answer.SUCCESS_MSG);
msg.setStatusMsg("导出成功");
} catch (Exception e) {
msg.setStatus(Answer.ERR_MSG);
msg.setStatusMsg("导出失败");
}
return msg;
}