he wei
2023-05-18 75364046ec0b3432733b56042e3de2da7831d8a8
src/main/java/com/whyc/service/ExcelExportService.java
@@ -1,6 +1,10 @@
package com.whyc.service;
import com.whyc.alarm.Fbs5100Alarm;
import com.whyc.alarm.Fbs5100AlarmData;
import com.whyc.alarm.Fbs5100AlarmParam;
import com.whyc.charge.*;
import com.whyc.dto.AlarmFactoryDto;
import com.whyc.dto.ServletUtils;
import org.apache.poi.ss.usermodel.ClientAnchor;
import org.apache.poi.xssf.usermodel.*;
@@ -31,7 +35,6 @@
    //导出放电数据bcp
    public void exportBcp(HttpServletRequest req, HttpServletResponse resp) {
        String curr_echart = req.getParameter("curr_echart");        //电池电流折线图
        String groupVol_echart = req.getParameter("groupVol_echart");//组端电压折线图
        String cap_echart = req.getParameter("cap_echart");            //测试容量折线图
@@ -90,8 +93,7 @@
        rowNumSheet++;
        sheet.createRow(rowNumSheet);
        sheet.getRow(rowNumSheet).createCell(0).setCellValue("测试开始时间:" + formartDate(capState.StartDT.time,"yyyy-MM-dd HH:mm:ss"));
        sheet.getRow(rowNumSheet).createCell(1).setCellValue("测试时长:" + capState.Test_Time.hour+":"+capState.Test_Time.minute+":"+capState.Test_Time.second);
        sheet.getRow(rowNumSheet).createCell(1).setCellValue("测试时长:" + getHHMMSS(capState.Test_Time.hour,capState.Test_Time.minute,capState.Test_Time.second));
        rowNumSheet += 4;
        //插入图片
@@ -102,7 +104,7 @@
                sheet.createRow(rowNumSheet - 1);
                sheet.getRow(rowNumSheet - 1).createCell(0).setCellValue(picName[i]);
                //rowNum++;
                XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 512, 255, (short) 0, rowNumSheet, (short) 10, rowNumSheet + 27);
                XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 512, 255, (short) 0, rowNumSheet, (short) 10, rowNumSheet + 24);
                anchor.setAnchorType(ClientAnchor.AnchorType.DONT_MOVE_AND_RESIZE);
                patriarch.createPicture(anchor, wb.addPicture(bytes.get(picNum), XSSFWorkbook.PICTURE_TYPE_PNG)).resize(1);
                picNum++;
@@ -130,7 +132,7 @@
        for (int i = 0; i < list.size(); i++) {
            sheet1.createRow(rowNum);  //创建行
            Fbs5100FbsData fbsData = list.get(i);
            sheet1.getRow(rowNum).createCell(0).setCellValue(fbsData.testTime.hour+":"+fbsData.testTime.minute+":"+fbsData.testTime.second);
            sheet1.getRow(rowNum).createCell(0).setCellValue(getHHMMSS(fbsData.testTime.hour,fbsData.testTime.minute,fbsData.testTime.second));
            sheet1.getRow(rowNum).createCell(1).setCellValue(String.valueOf(fbsData.muxianvol_discharge));
            sheet1.getRow(rowNum).createCell(2).setCellValue(String.valueOf(fbsData.muxianvol_charge));
            sheet1.getRow(rowNum).createCell(3).setCellValue(String.valueOf(fbsData.boostDCDC_OutVol));
@@ -162,6 +164,27 @@
    public static String formartDate(Date date, String str){
        return new SimpleDateFormat(str).format(date);
    }
    //获取标准格式时间
    public static String getHHMMSS(int hour,int minute,int second){
        String time="";
        if(hour<10){
            time+="0"+hour;
        }else{
            time+=""+hour;
        }
        if(minute<10){
            time+=":"+"0"+minute;
        }else{
            time+=":"+minute;
        }
        if(second<10){
            time+=":"+"0"+second;
        }else{
            time+=":"+second;
        }
        return time;
    }
    public String[] getRowName(String bcp){
        if (bcp.equals("bcp")){
            String[] rowNameBcp = {"测试时间","放电母线电压(V)","充电母线电压(V)","升压DCDC输出电压","48V母线电压"};
@@ -170,7 +193,7 @@
            String[] rowNameChr = {"测试时间","放电母线电压(V)","充电母线电压(V)","升压DCDC输出电压","48V母线电压"};
            return rowNameChr;
        }else if (bcp.equals("alm")){
            String[] rowNameAlm = {"测试时间","放电母线电压(V)","充电母线电压(V)","升压DCDC输出电压","48V母线电压"};
            String[] rowNameAlm = {"告警开始时间","告警名称","告警类型","告警值"};
            return rowNameAlm;
        }else{
            String[] rowName1 = {"测试时间","总电压(V)","总电流(A)","环境温度","环境湿度","测试容量(AH)"};
@@ -186,12 +209,7 @@
            return picNameBcp;
        }else if(fileType.equals("chr")){
            String[] picNameChr = new String[]{
                    "电池电流折线图","组端电压折线图","测试容量折线图","单体电压折线图","环境温度折线图","环境湿度折线图"
            };
            return picNameChr;
        }else if(fileType.equals("alm")){
            String[] picNameChr = new String[]{
                    "电池电流折线图","组端电压折线图","测试容量折线图","单体电压折线图","环境温度折线图","环境湿度折线图"
                    "电池电流折线图","组端电压折线图","测试容量折线图","温度折线图"
            };
            return picNameChr;
        }else{
@@ -201,62 +219,114 @@
    //导出充电数据chr
    /*public void exportChr(HttpServletRequest req, HttpServletResponse resp){
        String volEchart = req.getParameter("vol_echart");         //单体电压折线图
        String resEchart = req.getParameter("res_echart");         //单体内阻折线图
        String tmpEchart = req.getParameter("tmp_echart");         //单体温度折线图
    public void exportChr(HttpServletRequest req, HttpServletResponse resp){
        String curr_echart = req.getParameter("curr_echart");        //电池电流折线图
        String groupVol_echart = req.getParameter("groupVol_echart");//组端电压折线图
        String cap_echart = req.getParameter("cap_echart");            //测试容量折线图
        String temp_echart = req.getParameter("temp_echart");//温度折线图
        String filePath = req.getParameter("filePath");
        Fbs5100ChargeData data=chargeDataService.readFileData(filePath);
        //图片base64后的数据
        List<byte[]> bytes = new ArrayList<>();
        try {
            if (ServletUtils.isNotNull(volEchart)) {
                String[] url = volEchart.split(",");
            if (ServletUtils.isNotNull(curr_echart)) {
                String[] url = curr_echart.split(",");
                bytes.add(new BASE64Decoder().decodeBuffer(url[1]));
            }
            if (ServletUtils.isNotNull(resEchart)) {
                String[] url = resEchart.split(",");
            if (ServletUtils.isNotNull(groupVol_echart)) {
                String[] url = groupVol_echart.split(",");
                bytes.add(new BASE64Decoder().decodeBuffer(url[1]));
            }
            if (ServletUtils.isNotNull(tmpEchart)) {
                String[] url = tmpEchart.split(",");
            if (ServletUtils.isNotNull(cap_echart)) {
                String[] url = cap_echart.split(",");
                bytes.add(new BASE64Decoder().decodeBuffer(url[1]));
            }
            if (ServletUtils.isNotNull(temp_echart)) {
                String[] url = temp_echart.split(",");
                bytes.add(new BASE64Decoder().decodeBuffer(url[1]));
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        //数据
        Fbs5100BattParam battParam =data.battParam;
        Fbs5100ChargeParam chargeParam =data.chargeParam;
        Fbs5100ChargeState chargeState =data.chargeState;
        //从文件中获取数据
        List<Fbs5100FbsData> list = data.fbsDatas;
        //当前日期
        String nowFormat = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
        String excelName = "BRES-"+nowFormat;
        String excelName = "chr-"+nowFormat;
        XSSFWorkbook wb = new XSSFWorkbook();
        XSSFSheet sheet = wb.createSheet("数据总表");
        int rowNumSheet = 0;
        sheet.createRow(rowNumSheet);
        sheet.getRow(rowNumSheet).createCell(0).setCellValue("电池组数:" + battParam.BattGroupCount);
        sheet.getRow(rowNumSheet).createCell(1).setCellValue("每组单体数:" + battParam.EachGroupBattCount);
        sheet.getRow(rowNumSheet).createCell(2).setCellValue("标称单体电压:" + battParam.MonomerVol + "V");
        rowNumSheet++;
        sheet.createRow(rowNumSheet);
        sheet.getRow(rowNumSheet).createCell(0).setCellValue("浮充电流阈值:" + battParam.FloatChargeVol + "A");
        sheet.getRow(rowNumSheet).createCell(1).setCellValue("在线电压低阈值:" + battParam.OnlineVolLow + "A");
        sheet.getRow(rowNumSheet).createCell(2).setCellValue("均充电压:" + battParam.JunChargeVol + "A");
        rowNumSheet++;
        sheet.createRow(rowNumSheet);
        sheet.getRow(rowNumSheet).createCell(0).setCellValue("测试开始时间:" + formartDate(chargeState.StartDT.time,"yyyy-MM-dd HH:mm:ss"));
        sheet.getRow(rowNumSheet).createCell(1).setCellValue("测试时长:" + getHHMMSS(chargeState.Test_Time.hour,chargeState.Test_Time.minute,chargeState.Test_Time.second));
        rowNumSheet += 4;
        //图片元素
        XSSFDrawing patriarch = sheet.createDrawingPatriarch();
        int rowNumSheet = 1;
        //插入图片
        int picNum = 0;
        String[] picName =new String[]{"单体电压折线图","单体内阻折线图","单体温度折线图"};
        String[] picName =getPicName("chr");
        if (picName.length==bytes.size()){
            for(int i=0;i<picName.length;i++){
                sheet.createRow(rowNumSheet-1);
                sheet.getRow(rowNumSheet-1).createCell(0).setCellValue(picName[i]);
                //rowNum++;
                XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 512, 255,(short) 0, rowNumSheet, (short) 10, rowNumSheet+27);
                XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 512, 255,(short) 0, rowNumSheet, (short) 10, rowNumSheet+24);
                anchor.setAnchorType(ClientAnchor.AnchorType.DONT_MOVE_AND_RESIZE);
                patriarch.createPicture(anchor,wb.addPicture(bytes.get(picNum),XSSFWorkbook.PICTURE_TYPE_PNG)).resize(1);
                picNum ++;
                rowNumSheet+=30;
            }
        }
        //数据
        RESDataInfo resDataInfo =resService.readFileData(filePath);
        //从文件中获取数据
        List<RESData> list = resDataInfo.resDatas;
        int battNum=list.get(0).getBattSum();//单体个数
        //创建不同sheet
        createBresSheet(wb,battNum,list,1);//创建内阻数据
        createBresSheet(wb,battNum,list,2);//创建温度数据
        createBresSheet(wb,battNum,list,3);//创建电压数据
        XSSFSheet sheet1 = wb.createSheet("数据");
        //抬头
        int rowNum = 0;
        sheet1.createRow(rowNum).createCell(0).setCellValue("测试数据");
        rowNum++;
        //属性栏
        String[] rowName = getRowName("chr");
        XSSFRow row = sheet1.createRow(rowNum);
        for (int i = 0; i < rowName.length; i++) {
            row.createCell(i).setCellValue(rowName[i]);
        }
        for (int i = 0; i < battParam.BattGroupCount; i++) {
            row.createCell(rowName.length + i*2).setCellValue("#" + Integer.valueOf(i + 1)+"在线电压");
            row.createCell(rowName.length + i*2+1).setCellValue("#" + Integer.valueOf(i + 1)+"组端电压");
        }
        rowNum++;
        //数据栏
        for (int i = 0; i < list.size(); i++) {
            sheet1.createRow(rowNum);  //创建行
            Fbs5100FbsData fbsData = list.get(i);
            sheet1.getRow(rowNum).createCell(0).setCellValue(getHHMMSS(fbsData.testTime.hour,fbsData.testTime.minute,fbsData.testTime.second));
            sheet1.getRow(rowNum).createCell(1).setCellValue(String.valueOf(fbsData.muxianvol_discharge));
            sheet1.getRow(rowNum).createCell(2).setCellValue(String.valueOf(fbsData.muxianvol_charge));
            sheet1.getRow(rowNum).createCell(3).setCellValue(String.valueOf(fbsData.boostDCDC_OutVol));
            sheet1.getRow(rowNum).createCell(4).setCellValue(String.valueOf(fbsData.muxianvol));
            for (int j = 0; j < battParam.BattGroupCount; j++) {
                sheet1.getRow(rowNum).createCell(rowName.length + j*2).setCellValue(String.valueOf(fbsData.onlinevol[j]));
                sheet1.getRow(rowNum).createCell(rowName.length + j*2+1).setCellValue(String.valueOf(fbsData.groupvol[j]));
            }
            rowNum++;
        }
        rowNum++;
        try {
            // 转码防止乱码
            resp.addHeader("Content-Disposition", "attachment;filename="
@@ -271,198 +341,56 @@
            e.printStackTrace();
        }
    }
    //bres中内阻数据/温度数据/单体电压数据放在不同的sheet中
    public void createBresSheet(XSSFWorkbook wb,int battNum,List<RESData> list,int type){
        String sheetName="";
        String testName="";
        switch (type){
            case 1:sheetName= "内阻数据";testName="测试数据(内阻)";break;
            case 2:sheetName= "温度数据";testName="测试数据(温度)";break;
            case 3:sheetName= "电压数据";testName="测试数据(电压)";break;
        }
        XSSFSheet sheet1 = wb.createSheet(sheetName);
        //抬头
        int rowNum = 0;
        sheet1.createRow(rowNum).createCell(0).setCellValue(testName);
        rowNum++;
        //属性栏
        XSSFRow row = sheet1.createRow(rowNum);
        row.createCell(0).setCellValue("测试时间");
        for(int i=0;i<battNum;i++){
            row.createCell(1+i).setCellValue("#"+Integer.valueOf(i+1));
        }
        rowNum++;
        float[] datas=new float[]{};
        //数据栏
        for (int i = 0; i < list.size(); i++) {
            sheet1.createRow(rowNum);  //创建行
            RESData resData= list.get(i);
            switch (type){
                case 1:datas= resData.getMonomerRes();break;
                case 2:datas= resData.getMonomerTemp();break;
                case 3:datas= resData.getMonomerVol();break;
            }
            sheet1.getRow(rowNum).createCell(0).setCellValue(formartDate(resData.getData_Time(),"yyyy-MM-dd HH:mm:ss"));
            for (int k = 0;k<battNum;k++){
                sheet1.getRow(rowNum).createCell(k+1).setCellValue(datas[k]);
            }
            rowNum++;
        }
        rowNum++;
    }
    //导出告警数据alm
    public void exportAlm(HttpServletRequest req, HttpServletResponse resp){
        String volEchart = req.getParameter("vol_echart");         //单体电压折线图
        String currEchart = req.getParameter("curr_echart");      //电池电流折线图
        String groupVolEchart = req.getParameter("groupVol_echart");      //组端电压折线图
        String capEchart = req.getParameter("cap_echart");         //测试容量折线图
        String filePath = req.getParameter("filePath");
        //数据
        TestDataInfo testDataInfoMcp=testDataInfoService.readFileData(filePath);
        MonitorDataInfo info = testDataInfoMcp.monitorDataInfo;//组端数据
        //图片base64后的数据
        List<byte[]> bytes = new ArrayList<>();
        try {
            if (ServletUtils.isNotNull(volEchart)) {
                String[] url = volEchart.split(",");
                bytes.add(new BASE64Decoder().decodeBuffer(url[1]));
            }
            if (ServletUtils.isNotNull(currEchart)) {
                String[] url = currEchart.split(",");
                bytes.add(new BASE64Decoder().decodeBuffer(url[1]));
            }
            if (ServletUtils.isNotNull(groupVolEchart)) {
                String[] url = groupVolEchart.split(",");
                bytes.add(new BASE64Decoder().decodeBuffer(url[1]));
            }
            if (ServletUtils.isNotNull(capEchart)) {
                String[] url = capEchart.split(",");
                bytes.add(new BASE64Decoder().decodeBuffer(url[1]));
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        Fbs5100AlarmData data=alarmDataService.readFileData(filePath);
        Fbs5100AlarmParam alarmParam = data.alarmParam;
        List<Fbs5100Alarm> list=data.alarms;
        //当前日期
        String nowFormat = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
        String excelName ="";
        int fileType=testDataInfoMcp.getFile_type();
        if(fileType==0xFA){
            excelName="MCP-"+nowFormat;
        }else{
            excelName="MCH-"+nowFormat;
        }
        String excelName ="alm-"+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
        XSSFWorkbook wb = new XSSFWorkbook();
        XSSFSheet sheet = wb.createSheet("数据总表");
        //图片元素
        XSSFDrawing patriarch = sheet.createDrawingPatriarch();
        BattParam battParam=info.battparam;//电池参数
        SYSMonitorParam sysParam=info.monitorparam;//组端参数
        SYSMonitorState sysState=info.monitorstate;//组端状态
        int rowNumSheet = 0;
        sheet.createRow(rowNumSheet);
        sheet.getRow(rowNumSheet).createCell(0).setCellValue("电池参数:");
        sheet.getRow(rowNumSheet).createCell(0).setCellValue("告警参数:");
        rowNumSheet++;
        sheet.createRow(rowNumSheet);
        sheet.getRow(rowNumSheet).createCell(0).setCellValue("标称容量(1AH):"+battParam.STD_CAP);
        sheet.getRow(rowNumSheet).createCell(1).setCellValue("标称内阻(0.001mΩ):"+battParam.STD_RES);
        sheet.getRow(rowNumSheet).createCell(2).setCellValue("单体标称电压(0.1V):"+battParam.monomerVol);
        sheet.getRow(rowNumSheet).createCell(0).setCellValue("标称容量:"+alarmParam.Batt_CAP);
        sheet.getRow(rowNumSheet).createCell(1).setCellValue("组端电压上限值:"+alarmParam.GroupVol_H);
        sheet.getRow(rowNumSheet).createCell(2).setCellValue("组端电压下限值:"+alarmParam.GroupVol_L);
        rowNumSheet++;
        sheet.createRow(rowNumSheet);
        sheet.getRow(rowNumSheet).createCell(0).setCellValue("组数:"+battParam.battGroupCount);
        int battNum=battParam.eachGroupBattCount;//单体个数
        sheet.getRow(rowNumSheet).createCell(1).setCellValue("每组单体个数:"+battNum);
        sheet.getRow(rowNumSheet).createCell(0).setCellValue("交流电压上限值:"+alarmParam.AC_VOL_H);
        sheet.getRow(rowNumSheet).createCell(1).setCellValue("交流电压下限值:"+alarmParam.AC_VOL_L);
        rowNumSheet++;
        sheet.createRow(rowNumSheet);
        sheet.getRow(rowNumSheet).createCell(0).setCellValue("组端参数:");
        rowNumSheet++;
        sheet.createRow(rowNumSheet);
        sheet.getRow(rowNumSheet).createCell(0).setCellValue("放电电流:"+sysParam.disCurr);
        sheet.getRow(rowNumSheet).createCell(1).setCellValue("放电容量:"+sysParam.disCap);
        sheet.getRow(rowNumSheet).createCell(2).setCellValue("放电时长:"+sysParam.disTime);
        rowNumSheet++;
        sheet.createRow(rowNumSheet);
        sheet.getRow(rowNumSheet).createCell(0).setCellValue("组端下限:"+sysParam.groupVol_LOW);
        sheet.getRow(rowNumSheet).createCell(1).setCellValue("单体下限:"+sysParam.monomerVol_LOW);
        sheet.getRow(rowNumSheet).createCell(2).setCellValue("下限个数:"+sysParam.monomerLowCount);
        rowNumSheet++;
        sheet.createRow(rowNumSheet);
        sheet.getRow(rowNumSheet).createCell(0).setCellValue("充电电流:"+sysParam.chrCurr);
        sheet.getRow(rowNumSheet).createCell(1).setCellValue("充电容量:"+sysParam.chrCap);
        sheet.getRow(rowNumSheet).createCell(2).setCellValue("充电时长:"+sysParam.chrTime);
        rowNumSheet++;
        sheet.createRow(rowNumSheet);
        sheet.getRow(rowNumSheet).createCell(0).setCellValue("组端状态:");
        rowNumSheet++;
        sheet.createRow(rowNumSheet);
        sheet.getRow(rowNumSheet).createCell(0).setCellValue("启动放电的日期时间:"+formartDate(sysState.startDT.time,"yyyy-MM-dd HH:mm:ss"));
        sheet.getRow(rowNumSheet).createCell(1).setCellValue("终止放电的日期时间:"+formartDate(sysState.stopDT.time,"yyyy-MM-dd HH:mm:ss"));
        sheet.getRow(rowNumSheet).createCell(2).setCellValue("已测试时间(HMS):"+sysState.test_Time.testTime);
        rowNumSheet+=4;
        //插入图片
        int picNum = 0;
        String[] picName =new String[]{"单体电压折线图","电池电流折线图","组端电压折线图","测试容量折线图"};
        if (picName.length==bytes.size()){
            for(int i=0;i<picName.length;i++){
                sheet.createRow(rowNumSheet-1);
                sheet.getRow(rowNumSheet-1).createCell(0).setCellValue(picName[i]);
                //rowNum++;
                XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 512, 255,(short) 0, rowNumSheet, (short) 10, rowNumSheet+27);
                anchor.setAnchorType(ClientAnchor.AnchorType.DONT_MOVE_AND_RESIZE);
                patriarch.createPicture(anchor,wb.addPicture(bytes.get(picNum),XSSFWorkbook.PICTURE_TYPE_PNG)).resize(1);
                picNum ++;
                rowNumSheet+=30;
            }
        }
        //从文件中获取数据
        List<FBSData> list=testDataInfoMcp.fbsDatas;//充放电数据
        String sheetName="放电数据";
        String testName="测试数据";
        XSSFSheet sheet1 = wb.createSheet(sheetName);
        String testName="测试数据:";
        //抬头
        int rowNum = 0;
        sheet1.createRow(rowNum).createCell(0).setCellValue(testName);
        rowNum++;
        sheet.createRow(rowNumSheet).createCell(0).setCellValue(testName);
        rowNumSheet++;
        XSSFRow row = sheet1.createRow(rowNum);
        XSSFRow row = sheet.createRow(rowNumSheet);
        //属性栏
        String[] rowName =new String[]{"测试时间","在线电压","组端电压","电池电流","电池容量","电池温度"};
        String[] rowName =getRowName("alm");
        for (int i=0;i<rowName.length;i++){
            row.createCell(i).setCellValue(rowName[i]);
        }
        for(int i=0;i<battNum;i++){
            row.createCell(6+i).setCellValue("#"+Integer.valueOf(i+1));
        }
        rowNum++;
        rowNumSheet++;
        //数据栏
        for (int i = 0; i < list.size(); i++) {
            sheet1.createRow(rowNum);  //创建行
            FBSData fbsData= list.get(i);
            sheet1.getRow(rowNum).createCell(0).setCellValue(fbsData.testTime.testTime);
            sheet1.getRow(rowNum).createCell(1).setCellValue(fbsData.vcData.onlinevol[0]);
            sheet1.getRow(rowNum).createCell(2).setCellValue(fbsData.vcData.groupvol[0]);
            sheet1.getRow(rowNum).createCell(3).setCellValue(fbsData.vcData.battcurr[0]);
            sheet1.getRow(rowNum).createCell(4).setCellValue(fbsData.vcData.battcap[0]);
            sheet1.getRow(rowNum).createCell(5).setCellValue(fbsData.vcData.batttemp[0]);
            float[]  datas=fbsData.mvol.vol;
            for (int k = 0;k<battNum;k++){
                sheet1.getRow(rowNum).createCell(k+6).setCellValue(datas[k]);
            }
            rowNum++;
            sheet.createRow(rowNumSheet);  //创建行
            Fbs5100Alarm alarm= list.get(i);
            sheet.getRow(rowNumSheet).createCell(0).setCellValue(formartDate(alarm.StartTime.time,"yyyy-MM-dd HH:mm:ss"));
            sheet.getRow(rowNumSheet).createCell(1).setCellValue(AlarmFactoryDto.getAlmName(alarm.AlarmItem));
            sheet.getRow(rowNumSheet).createCell(2).setCellValue(AlarmFactoryDto.getAlmType(alarm.AlarmType));
            sheet.getRow(rowNumSheet).createCell(3).setCellValue(alarm.AlarmValue);
            rowNumSheet++;
        }
        rowNum++;
        rowNumSheet++;
        try {
            // 转码防止乱码
            resp.addHeader("Content-Disposition", "attachment;filename="
@@ -476,5 +404,5 @@
        } catch (IOException e) {
            e.printStackTrace();
        }
    }*/
    }
}