package testElectronJ; import org.apache.poi.hssf.usermodel.*; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import sun.misc.BASE64Decoder; import testElectronJ.util.ServletUtils; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @RestController @RequestMapping("test") public class TestController { //@Autowired //private FboDataInf fboDataInf; public static String fileUrl = ""; @GetMapping("/hello") public Response hello(){ return new Response().set(1,"hello"); } @PostMapping("/readFboFile") public Response readFboFile(@RequestParam String filePath) throws UnsupportedEncodingException { FboDataInf fboDataInf = new FboDataInf(); //String filePath1 = java.net.URLDecoder.decode(filePath,"utf-8"); fboDataInf.readFboFile(filePath); TestController.fileUrl = filePath; return new Response().set(1,fboDataInf,filePath); } @PostMapping("/export") public void export(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 actualCap_echart = req.getParameter("actualCap_echart"); //实际容量折线图 String vol_echart = req.getParameter("vol_echart"); //单体电压折线图 String filePath = req.getParameter("filePath"); FboDataInf fboDataInf = new FboDataInf(); if (filePath==null || "".equals(filePath)){ filePath = fileUrl; } fboDataInf.readFboFile(filePath); //从文件中获取数据 List list = fboDataInf.fboData; //图片base64后的数据 List bytes = new ArrayList<>(); try { if (ServletUtils.isNotNull(curr_echart)) { String[] url = curr_echart.split(","); bytes.add(new BASE64Decoder().decodeBuffer(url[1])); } if (ServletUtils.isNotNull(groupVol_echart)) { String[] url = groupVol_echart.split(","); bytes.add(new BASE64Decoder().decodeBuffer(url[1])); } if (ServletUtils.isNotNull(cap_echart)) { String[] url = cap_echart.split(","); bytes.add(new BASE64Decoder().decodeBuffer(url[1])); } if (ServletUtils.isNotNull(actualCap_echart)) { String[] url = actualCap_echart.split(","); bytes.add(new BASE64Decoder().decodeBuffer(url[1])); } if (ServletUtils.isNotNull(vol_echart)) { String[] url = vol_echart.split(","); bytes.add(new BASE64Decoder().decodeBuffer(url[1])); } }catch (Exception e){ e.printStackTrace(); } //当前日期 String nowFormat = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); String excelName = "FBX-"+nowFormat; HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("图表"); //图片元素 HSSFPatriarch patriarch = sheet.createDrawingPatriarch(); //字体格式-加粗 HSSFCellStyle cellStyle = wb.createCellStyle(); HSSFFont font = wb.createFont(); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); cellStyle.setFont(font); int rowNumSheet = 0; rowNumSheet+=2; //插入图片 int picNum = 0; String[] picName = new String[]{ "电池电流折线图","组端电压折线图","测试容量折线图","实际容量折线图","单体电压折线图" }; if (picName.length==bytes.size()){ for(int i=0;i