HSSFWorkbook導出excel

package com.hx.gpsplatform.common.utils;


import java.util.HashMap;
import java.util.List;
import java.util.Map;


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;


public class ExportExcelUtils {
// 翻譯的表頭容器
private static Map<String,String[]> headMap = new HashMap<String,String[]>();
// value 名稱容器
private static Map<String,String[]> valueMap = new HashMap<String,String[]>();
//
private static String[] getHeaderMap(String excelType){
if(headMap == null){
headMap = new HashMap<String,String[]>();
}
if(headMap.size() == 0){
headMap.put(ExportExcelUtils.TITLE_STOCK_IMEI, new String[]{"IMEI","設備型號","所屬分組","在線狀態","最後上傳時間","庫存狀態","激活時間","在庫時間","在庫時長(天)"});
headMap.put(ExportExcelUtils.TITLE_STOCK_SIM, new String[]{"客戶名","車牌","ICCID","SIM卡號碼","所屬分組","SIM卡供應商","SIM卡狀態","流量","庫存狀態","激活時間","在庫時間","在庫時長(天)"});
headMap.put(ExportExcelUtils.TITLE_SIM, new String[]{ "SIM ID","ICCID","供應商ID(如:4-國脈,5-麥谷)","庫存狀態(1-使用中,2-在庫,3-流失,4-壞卡)"});
headMap.put(ExportExcelUtils.TITLE_IMEI, new String[]{ "IMEI ID", "供應商id(如:1-移動,2-聯通,3-電信)", "類型(1-無線,0-有線)", "型號", "描述", "庫存狀態(1-使用中,2-在庫,3-流失,4-壞機)","安裝日期","服務日期"});
headMap.put(ExportExcelUtils.TITLE_RELEVANCE, new String[]{ "客戶名", "車牌", "所屬用戶", "IMEI", "設備類型", "激活日期", "SIM卡號", "流量", "卡激活時間", "在線狀態", "貸款時間", "貸款週期","最後接收數據時間" });
headMap.put(ExportExcelUtils.TITLE_ONLINE, new String[]{ "車主姓名", "車牌號", "所屬用戶", "IMEI", "設備類型", "定位方式","車輛狀態", "速度", "定位時間", "接收狀態", "在線時長", "當前位置","電量" });
headMap.put(ExportExcelUtils.TITLE_OFFLINE, new String[]{ "車主姓名", "車牌號", "所屬用戶", "IMEI", "設備類型", "定位方式", "車輛狀態", "速度", "定位時間", "接收狀態", "離線時長", "離線位置","電量" });
headMap.put(ExportExcelUtils.TITLE_TRAVEL, new String[]{ "車主姓名", "車牌號", "所屬用戶", "IMEI", "設備類型", "定位方式", "車輛狀態", "速度", "定位時間", "接收時間", "行駛時長", "當前位置","電量" });
headMap.put(ExportExcelUtils.TITLE_FLAMOUT, new String[]{ "車主姓名", "車牌號", "所屬用戶", "IMEI", "設備類型","熄火時間", "熄火時長", "當前位置","在線狀態" });
headMap.put(ExportExcelUtils.TITLE_POWER, new String[]{ "車主姓名", "車牌號", "所屬用戶", "IMEI", "設備類型","報警類型", "報警次數","當前狀態","當前統計時間" });
headMap.put(ExportExcelUtils.TITLE_ALARMDETAIL, new String[]{ "車主姓名", "車牌號", "所屬用戶", "IMEI", "設備類型","報警類型", "報警時間","處理情況"});
headMap.put(ExportExcelUtils.TITLE_MILEAGEDAYORMON, new String[]{ "車牌", "日期","里程"});
headMap.put(ExportExcelUtils.TITLE_MILEAGEHANDORMON, new String[]{ "車牌", "開始日期","結束日期","里程"});
headMap.put(ExportExcelUtils.TITLE_IMPORTAREA, new String[]{ "客戶姓名", "車牌號","所屬用戶","IMEI","設備類型","行政區名稱","出區時間","出區地點","返回時間","返回地點","累計時間"});
headMap.put(ExportExcelUtils.TITLE_TWOEXPENSE, new String[]{ "客戶姓名", "車牌號","所屬用戶","IMEI","設備類型","二押點名稱","報警類型","報警時間","處警情況","報警地點","定位方式"});
headMap.put(ExportExcelUtils.TITLE_OVERSPEED, new String[]{  "車主姓名", "車牌號", "所屬用戶", "IMEI", "設備類型","報警類型", "定位方式","報警時間","處警情況","報警地點"});
headMap.put(ExportExcelUtils.TITLE_TRACKPLAYBACK, new String[]{  "定位狀態", "速度", "方向", "累積里程","狀態信息", "位置","定位時間","接收時間"});
}
return headMap.get(excelType);
}
// 獲取值容器
private static String[] getValueMap(String excelType){
if(valueMap == null){
valueMap = new HashMap<String,String[]>();
}
if(valueMap.size() == 0){
valueMap.put(ExportExcelUtils.TITLE_STOCK_IMEI, new String[]{"imeiId","versionType","organizeDesc","onlineStatus","uploadDate","stockStatus","activateDate","instockDate","instockTime"});
valueMap.put(ExportExcelUtils.TITLE_STOCK_SIM, new String[]{"custName","carNumber","ICCID","simId","organizeDesc","supplierName","simStatus","flow","simStockStatus","activateDate","simInstockDate","instockTime"});
valueMap.put(ExportExcelUtils.TITLE_RELEVANCE, new String[]{ "custName", "carNumber", "createdBy", "imeiId", "iType", "iActivateDate", "simId", "flow", "sActivateDate", "onlineStatus", "loanDate", "contractTerm","uploadDate" });
valueMap.put(ExportExcelUtils.TITLE_ONLINE, new String[]{ "custName", "carNumber","organizeDesc", "imei", "terminalType", "locationType","currentStatus","speed", "locationTime", "recepitTime", "totalTime","currentLocation","electricity" });
valueMap.put(ExportExcelUtils.TITLE_OFFLINE, new String[]{ "custName", "carNumber","organizeDesc", "imei", "terminalType", "locationType", "currentStatus","speed", "locationTime", "recepitTime", "totalTime","currentLocation" ,"electricity"});
valueMap.put(ExportExcelUtils.TITLE_TRAVEL, new String[]{ "custName", "carNumber","organizeDesc", "imei", "terminalType", "locationType", "currentStatus","speed", "locationTime", "recepitTime", "totalTime","currentLocation" ,"electricity"});
valueMap.put(ExportExcelUtils.TITLE_FLAMOUT, new String[]{ "custName", "carNumber","organizeDesc", "imei", "terminalType", "createdTime", "totalTime","currentLocation" ,"currentStatus"});
valueMap.put(ExportExcelUtils.TITLE_POWER, new String[]{ "custName", "carNumber","organizeDesc", "imei", "terminalType", "alarmType","alarmNum","onlineState" ,"alarmTime"});
valueMap.put(ExportExcelUtils.TITLE_ALARMDETAIL, new String[]{ "custName", "carNumber","organizeDesc", "imei", "terminalType", "alarmType","warningTime","alarmProcesse"});
valueMap.put(ExportExcelUtils.TITLE_MILEAGEDAYORMON, new String[]{ "licensePlate", "countDaytime","mileage"});
valueMap.put(ExportExcelUtils.TITLE_MILEAGEHANDORMON, new String[]{ "licensePlate", "starTtime","endedTime","mileage"});
valueMap.put(ExportExcelUtils.TITLE_IMPORTAREA, new String[]{ "custName", "carNumber","organizeDesc","imei","terminalType","fenceName","exitTime","exitLocation","returnTime","returnLocation","cumulativeTime"});
valueMap.put(ExportExcelUtils.TITLE_TWOEXPENSE, new String[]{ "custName", "carNumber","organizeDesc","imei","terminalType","fenceName","alarmType","alarmTime","alarmProcesse","alarmLocation","locationType"});
valueMap.put(ExportExcelUtils.TITLE_OVERSPEED, new String[]{ "custName", "carNumber","organizeDesc", "imei", "terminalType", "alarmType","locationType","alarmTime","alarmProcesse" ,"alarmLocation"});
valueMap.put(ExportExcelUtils.TITLE_TRACKPLAYBACK, new String[]{  "state", "speed",  "direction", "mileage","stateInfo", "location","receiveDate","createDate"});
}
return valueMap.get(excelType);
}

// IMEI的HEAD(中文轉英文)
public static final String[] TITLE_IMEI_TO_ENGLISH =  new String[]{ "imeiId", "supplierId", "iType", "versionType", "description", "stockStatus","installDate","serviceDate"};
// SIM的HEAD(中文轉英文)
public static final String[] TITLE_SIM_TO_ENGLISH = new String[]{ "simId","ICCID","simSupplierId","simStockStatus"};

// IMEI的HEAD
public static final String TITLE_STOCK_IMEI = "TITLE_STOCK_IMEI";
// IMEI的HEAD
public static final String TITLE_STOCK_SIM = "TITLE_STOCK_SIM";
// SIM的HEAD
public static final String TITLE_SIM = "TITLE_SIM";
// IMEI的HEAD
public static final String TITLE_IMEI = "TITLE_IMEI";
// Relevance
public static final String TITLE_RELEVANCE = "TITLE_RELEVANCE";
//車輛在線報表
public static final String TITLE_ONLINE = "TITLE_ONLINE";
//車輛離線報表
    public static final String TITLE_OFFLINE = "TITLE_OFFLINE";
    //車輛行駛報表
    public static final String TITLE_TRAVEL = "TITLE_TRAVEL";
    //車輛行駛報表
    public static final String TITLE_FLAMOUT = "TITLE_FLAMOUT";
    //車輛斷電報表
    public static final String TITLE_POWER = "TITLE_POWER";
    //超速報警
    public static final String TITLE_OVERSPEED = "TITLE_OVERSPEED";
    //車輛斷電報表
    public static final String TITLE_ALARMDETAIL = "TITLE_ALARMDETAIL";
    //里程報表按日或按月統計
    public static final String TITLE_MILEAGEDAYORMON = "TITLE_MILEAGEDAYORMON";
    //里程報表按日或按月統計
    public static final String TITLE_IMPORTAREA = "TITLE_IMPORTAREA";
    //二押點報表統計
    public static final String TITLE_TWOEXPENSE = "TITLE_TWOEXPENSE";
    //軌跡回放
    public static final String TITLE_TRACKPLAYBACK = "TITLE_TRACKPLAYBACK";
    public static final String TITLE_MILEAGEHANDORMON = "TITLE_MILEAGEHANDORMON";
@SuppressWarnings("rawtypes")
public static HSSFWorkbook getHSSFWorkbook(String excelType, List<Map> values) {
// 創建一個webbook和sheet,對應一個Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("EXPORT_DATA");
// 在sheet中添加表頭第0行,注意老版本poi對Excel的行數列數有限制short
HSSFRow row = sheet.createRow(0);
// 創建單元格,並設置值表頭 設置表頭居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 創建一個居中格式
HSSFCell cell = null;
// 創建header
String[] headerMap = ExportExcelUtils.getHeaderMap(excelType);
for (int i = 0; i < headerMap.length; i++) {
cell = row.createCell(i);
cell.setCellValue(headerMap[i]);
cell.setCellStyle(style);
}
// 創建內容
String[] valueMap = ExportExcelUtils.getValueMap(excelType);
if(values!=null){
for (int i = 0; i < values.size(); i++) {
row = sheet.createRow(i + 1);
for (int j = 0; j < valueMap.length; j++) {
if (values.get(i).get(valueMap[j]) != null) {
row.createCell(j).setCellValue(values.get(i).get(valueMap[j]) + "");
} else {
row.createCell(j).setCellValue("");
}
}
}
}
return wb;
}


}



控制類調用

@RequestMapping("/exportflamoutCurrent")
public String exportflamoutCurrent(ModelMap model,Pageable pageable,VehicleStatusDto relevanceDTO,HttpServletRequest request, HttpServletResponse response){
getOrganizeMap(model);
if (relevanceDTO.getSearchCondition() != null && "2".equals(relevanceDTO.getSearchCondition())) {
if (relevanceDTO.getSearchContent() != null) {
String[] temp = relevanceDTO.getSearchContent().split(" ");
if (temp.length == 2) {
relevanceDTO.setCustName(temp[0]);
relevanceDTO.setCarNumber(temp[1]);
}
}
}
HSSFWorkbook wb = ExportExcelUtils.getHSSFWorkbook(ExportExcelUtils.TITLE_FLAMOUT, reportService.findRunningStateA(relevanceDTO,pageable,exportCunrrent));
// 調用公共方法直接返回文件流
GPSResponseUtils.setResponseHeader(wb, "車輛行駛狀態報表_"+System.currentTimeMillis()+".xls", response);
        return "";
}


頁面


$("#listForm").attr("action","${base}/report/exportflamoutCurrent");
$("#listForm").submit();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章