@RequestMapping(value = "/xxxx", method = { RequestMethod.GET,
RequestMethod.POST })
public void xxxx(HttpServletRequest request,HttpServletResponse response) throws Exception {
List<Map<String, Object>> result=new ArrayList<Map<String, Object>>();
Map inmaps = new HashMap();
result = dataAnalysisService.getListSb2jcobj(inmaps);//获取对应数据
List listStr=new ArrayList();
//针对checkbox选中的数据导出
Object[] obj=null;
//循环赋值
if(result!=null && !result.isEmpty()){
for(int i=0;i<result.size();i++){
Iterator it = result.get(i).keySet().iterator();
obj=new Object[result.get(i).keySet().size()];
int j=0;
Set<String> str=result.get(i).keySet();
while(it.hasNext()){
String key = (String) it.next();
obj[j]=result.get(i).get(key);
j++;
}
listStr.add(obj);
}
}
request.setAttribute("list", listStr);
String time=new SimpleDateFormat("yyyyMMdd").format(new Date());
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("市表2考核");
wb.setSheetName(0, "市表2考核");//给excel命名
HSSFRow row = sheet.createRow((short) 0);//设置最顶栏得固定栏第一行(根据业务需求)
HSSFRow row2 = sheet.createRow((short) 1);//第二行
HSSFRow row4 = sheet.createRow((short) 2);
sheet.createFreezePane(0, 3);//设置固定行行数
HSSFCellStyle cellstyle1 = wb.createCellStyle();//创建相应得类
cellstyle1.setAlignment(XSSFCellStyle.ALIGN_CENTER_SELECTION);
HSSFFont f1 = wb.createFont();
f1.setFontHeightInPoints((short) 12);// 字号
f1.setFontName("宋体"); // 宋体
f1.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 字体加粗
cellstyle1.setFont(f1);
cellstyle1.setWrapText(true);// 自动换行
cellstyle1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//文字垂直居中
//设置前三行的数据
String[] str=new String[]{"2019年江苏省高质量发展监测评价指标表"};
String[] str1=new String[]{"序号","考核指标","","省指标","南通部门分解","","海安对接考核部门","","1-10月定案数","","","","1-11月预计数(选择报告期11月)","","",""};
String[] str2=new String[]{"","","","","牵头部门","配合部门","牵头部门","配合部门","总量","位次","增幅","位次","总量","位次","增幅","位次"};
//给前三行循环赋值
for(int k=0;k<str.length;k++){
cteateCell(wb, row, (short) k, str[k], true,cellstyle1);
}
for(int k=0;k<str1.length;k++){
cteateCell(wb, row2, (short) k, str1[k], true,cellstyle1);
}
for(int k=0;k<str2.length;k++){
cteateCell(wb, row4, (short) k, str2[k], true,cellstyle1);
}
HSSFRow row3 = null;
for (int i = 0; i < listStr.size(); i++) {
row3 = sheet.createRow((short) (i + 3));//这边的i需要增加相应的行数来对应设置的固定行
Object[] ob = (Object[]) listStr.get(i);
for(int j=0;j<ob.length;j++){
cteateCell(wb, row3, (short) j, ob[j]== null?"":ob[j].toString(), false,cellstyle1);
}
}
for(int k=0;k<str2.length;k++){
sheet.setColumnWidth((short) k, (short) (5000)); // sheet.setColumnWidth((short)
}
//下面是各种合并的单元格
//CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol)
sheet.addMergedRegion(new CellRangeAddress(0,0,0,15));//第一排
sheet.addMergedRegion(new CellRangeAddress(1,2,1,2));//第二排
sheet.addMergedRegion(new CellRangeAddress(1,1,4,5));//第二排
sheet.addMergedRegion(new CellRangeAddress(1,1,6,7));//第二排
//sheet.addMergedRegion(new CellRangeAddress(1,1,1,2));//第二排
sheet.addMergedRegion(new CellRangeAddress(1,1,8,11));//第二排
sheet.addMergedRegion(new CellRangeAddress(1,1,12,15));//第二排
sheet.addMergedRegion(new CellRangeAddress(1,2,0,0));//第三排
sheet.addMergedRegion(new CellRangeAddress(1,2,3,3));//第三排
String allpath="指标预警"+ ".xls";//文件名
allpath = URLEncoder.encode(allpath, "GB2312");
allpath = URLDecoder.decode(allpath, "ISO8859-1");
try {
response.reset();
response.setContentType("application/vnd.ms-excel;charset=utf-8");// // 指定文件的保存类型。
response.setCharacterEncoding("utf-8");
response.setHeader("Content-Disposition", "attachment;filename="
+ allpath);
OutputStream out=response.getOutputStream();
wb.write(out);
out.flush();
out.close();
} catch (Exception e) {
String msg=e.getMessage();
e.printStackTrace();
}
}
excel导出,合并单元格更改单元格样式
最新推荐文章于 2023-06-02 18:00:40 发布