工具类
package com.ai.common;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.IndexedColors;
public class ExcelUtil {
/**
* 导出Excel
* @param sheetName sheet名称
* @param title 标题
* @param values 内容
* @param wb HSSFWorkbook对象
* @return
*/
public static HSSFWorkbook getHSSFWorkbook(String sheetName,String []title,String [][]values, HSSFWorkbook wb){
// 第一步,创建一个HSSFWorkbook,对应一个Excel文件
if(wb == null){
wb = new HSSFWorkbook();
}
// 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet(sheetName);
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
HSSFRow row = sheet.createRow(0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
//声明列对象
HSSFCell cell = null;
//创建标题
for(int i=0;i<title.length;i++){
cell = row.createCell(i);
cell.setCellValue(title[i]);
cell.setCellStyle(style);
}
//创建内容
for(int i=0;i<values.length;i++){
row = sheet.createRow(i + 1);
for(int j=0;j<values[i].length;j++){
//将内容按顺序赋给对应的列对象
row.createCell(j).setCellValue(values[i][j]);
}
}
return wb;
}
//有颜色
public static HSSFWorkbook getHSSFWorkbookColor(String sheetName,String []title,String [][]values, HSSFWorkbook wb){
// 第一步,创建一个HSSFWorkbook,对应一个Excel文件
if(wb == null){
wb = new HSSFWorkbook();
}
// 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet(sheetName);
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
HSSFRow row = sheet.createRow(0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
sheet.setColumnWidth(0, 5000);
sheet.setColumnWidth(1, 15000);
sheet.setColumnWidth(2, 5000);
sheet.setColumnWidth(3, 10000);
sheet.setColumnWidth(4, 10000);
//声明列对象
HSSFCell cell = null;
//创建标题
for(int i=0;i<title.length;i++){
cell = row.createCell(i);
cell.setCellValue(title[i]);
cell.setCellStyle(style);
}
//创建内容
for(int i=0;i<values.length;i++){
row = sheet.createRow(i + 1);
for(int j=0;j<values[i].length;j++){
//将内容按顺序赋给对应的列对象
row.createCell(j).setCellValue(values[i][j]);
//6.设置样式
CellStyle cellStyle = wb.createCellStyle();
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); //填充单元格
if("删除".equals(String.valueOf(values[i][2]))) {
cellStyle.setFillForegroundColor(HSSFColor.RED.index); //填红色
row.getCell(j).setCellStyle(cellStyle);
}else if("保留".equals(String.valueOf(values[i][2]))) {
cellStyle.setFillForegroundColor(IndexedColors.BRIGHT_GREEN.getIndex()); //绿色
row.getCell(j).setCellStyle(cellStyle);
}else if("新增".equals(String.valueOf(values[i][2]))) {
cellStyle.setFillForegroundColor(IndexedColors.LIGHT_BLUE.getIndex()); //填蓝色
row.getCell(j).setCellStyle(cellStyle);
}else if("观察".equals(String.valueOf(values[i][2]))) {
cellStyle.setFillForegroundColor(IndexedColors.SKY_BLUE.getIndex()); //填红色
row.getCell(j).setCellStyle(cellStyle);
}else if("室分保留".equals(String.valueOf(values[i][2]))) {
cellStyle.setFillForegroundColor(IndexedColors.BRIGHT_GREEN.getIndex()); //填红色
row.getCell(j).setCellStyle(cellStyle);
}
}
}
return wb;
}
}
调用
//导出
@RequestMapping(value = "/exportRelExcl.do", method = RequestMethod.GET)
@ResponseBody
public void exportRelExcl(HttpServletRequest request,HttpServletResponse response) throws Exception {
Map paramMap = PJCommon.getRequestParamMapAndSessionInfo(request);
List<Map> list=new ArrayList();
list= gridService.getMonitorLinkItemList(paramMap);
//excel标题
//ADIVICE: 0
// CAMPUS_ID: "HF-XY-001"
// CENT_X: "117.20961"
// CENT_Y: "31.89851"
// INVALIDATE_TIMES: 0
// NETFLAG: 1
// OBJECTID: 37672
// SECTOR_NAME_CH:
String[] title = {"校园ID","校园名称","建议状态","扇区中心经度","扇区中心纬度"};
//excel文件名
String fileName = "扇区关联表"+System.currentTimeMillis()+".xls";
//sheet名
String sheetName = "扇区关联表";
String content[][]=new String[list.size()][5] ;
for (int i = 0; i < list.size(); i++) {
Map obj = list.get(i);
String type="";
if("0".equals(String.valueOf(obj.get("ADIVICE")))) {
type="删除";
}else if("1".equals(String.valueOf(obj.get("ADIVICE")))) {
type="保留";
}else if("2".equals(String.valueOf(obj.get("ADIVICE")))) {
type="新增";
}else if("3".equals(String.valueOf(obj.get("ADIVICE")))) {
type="观察";
}else if("4".equals(String.valueOf(obj.get("ADIVICE")))) {
type="室分保留";
}
content[i][0] = tostring(String.valueOf(obj.get("CAMPUS_ID")));
content[i][1] = tostring(String.valueOf(obj.get("SECTOR_NAME_CH")));
content[i][2] = type;
content[i][3] = tostring(String.valueOf(obj.get("CENT_X")));
content[i][4] = tostring(String.valueOf(obj.get("CENT_Y")));
}
//创建HSSFWorkbook
HSSFWorkbook wb = ExcelUtil.getHSSFWorkbookColor(sheetName, title, content, null);
//响应到客户端
try {
this.setResponseHeader(response, fileName);
OutputStream os = response.getOutputStream();
wb.write(os);
os.flush();
os.close();
} catch (Exception e){
e.printStackTrace();
}
}
前端
function exportRelExcl(click_ID,type){
var sql='?type='+type
+'&cityCode='+cityCode
+"&ID="+click_ID
+"&serial="+ serial;
window.location.href="./../../cityGrid/exportRelExcl.do"+sql;
}