概述
动态导根据传入表与字段导出表格
笔记:Java后端 Excel导出表格
pom:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
实现:
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;
}
最后
以上就是糊涂帅哥为你收集整理的Java后端 Excel导出表格的全部内容,希望文章能够帮你解决Java后端 Excel导出表格所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复