|
@@ -81,6 +81,49 @@ public class ExportUtil {
|
|
|
return ExportUtil.export(new File(filepath));
|
|
|
}
|
|
|
|
|
|
+ public static void alarm_export(JSONObject result, HttpServletResponse response) throws Exception {
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH_mm_ss.SSS");
|
|
|
+ JSONArray alarm_export_title = FastJsonReaderUtil.Instance()
|
|
|
+ .ReadJSONArray(new File(Constant.GetPath() + Constant.getSeperator() + "alarm_export_title.json"));
|
|
|
+ JSONArray content = result.getJSONArray("content");
|
|
|
+ String xlsFileName = sdf.format(new Date()) + ".xlsx";
|
|
|
+ ExcelWriter writer = ExcelUtil.getBigWriter();
|
|
|
+ // 设置所有列为自动宽度,不考虑合并单元格
|
|
|
+ SXSSFSheet sheet = (SXSSFSheet) writer.getSheet();
|
|
|
+ sheet.trackAllColumnsForAutoSizing();
|
|
|
+ List<String> rowHead = new ArrayList<String>();
|
|
|
+ for (int i = 0; i < alarm_export_title.size(); i++) {
|
|
|
+ JSONObject title = alarm_export_title.getJSONObject(i);
|
|
|
+ String jsonKey = title.getString("jsonKey");
|
|
|
+ String headerName = title.getString("headerName");
|
|
|
+ rowHead.add(headerName);
|
|
|
+ writer.addHeaderAlias(jsonKey, headerName);
|
|
|
+ }
|
|
|
+ // isWriteKeyAsHead为true的时候自动添加表头,与writeHeadRow不能同时存在,否则为双表头
|
|
|
+ writer.writeHeadRow(rowHead);
|
|
|
+ // 表头冻结
|
|
|
+ writer.setFreezePane(1);
|
|
|
+ writer.setOnlyAlias(true);
|
|
|
+ // setOnlyAlias必须在Write之前添加,否则总会在第一列多产生一个表头,也就是是说事后诸葛亮是不生效的
|
|
|
+ writer.write(content, false);
|
|
|
+ // 此方法必须在指定列数据完全写出后调用才有效
|
|
|
+ // writer.autoSizeColumnAll(); write方法中列数量变成了-1,导致autoSizeColumnAll不生效
|
|
|
+ for (int i = 0; i < rowHead.size(); i++) {
|
|
|
+ // 调整每一列宽度
|
|
|
+ sheet.autoSizeColumn((short) i);
|
|
|
+ // 解决自动设置列宽中文失效的问题
|
|
|
+ int columnWidth = (sheet.getColumnWidth(i) * 16 / 10) > 25000 ? 25000 : (sheet.getColumnWidth(i) * 16 / 10);
|
|
|
+ sheet.setColumnWidth(i, columnWidth);
|
|
|
+ }
|
|
|
+ xlsFileName = URLEncoder.encode(xlsFileName, "UTF-8");
|
|
|
+ response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
|
|
|
+ response.setHeader("Content-Disposition", "attachment;filename=" + xlsFileName);
|
|
|
+ ServletOutputStream out = response.getOutputStream();
|
|
|
+ writer.flush(out, true);
|
|
|
+ writer.close();
|
|
|
+ IoUtil.close(out);
|
|
|
+ }
|
|
|
+
|
|
|
public static ResponseEntity<FileSystemResource> fjd_export(JSONArray parseArray) throws Exception {
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
SimpleDateFormat sdf_ = new SimpleDateFormat("yyyyMMddHHmmss");
|
|
@@ -112,39 +155,59 @@ public class ExportUtil {
|
|
|
return ExportUtil.export(new File(filepath));
|
|
|
}
|
|
|
|
|
|
- public static void alarm_export(JSONObject result, HttpServletResponse response) throws Exception {
|
|
|
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH_mm_ss.SSS");
|
|
|
- JSONArray alarm_export_title = FastJsonReaderUtil.Instance()
|
|
|
- .ReadJSONArray(new File(Constant.GetPath() + Constant.getSeperator() + "alarm_export_title.json"));
|
|
|
- JSONArray content = result.getJSONArray("content");
|
|
|
+ public static void fjd_export(JSONArray parseArray, HttpServletResponse response) throws Exception {
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ SimpleDateFormat sdf_ = new SimpleDateFormat("yyyyMMddHHmmss");
|
|
|
String xlsFileName = sdf.format(new Date()) + ".xlsx";
|
|
|
ExcelWriter writer = ExcelUtil.getBigWriter();
|
|
|
- // 设置所有列为自动宽度,不考虑合并单元格
|
|
|
- SXSSFSheet sheet = (SXSSFSheet) writer.getSheet();
|
|
|
- sheet.trackAllColumnsForAutoSizing();
|
|
|
- List<String> rowHead = new ArrayList<String>();
|
|
|
- for (int i = 0; i < alarm_export_title.size(); i++) {
|
|
|
- JSONObject title = alarm_export_title.getJSONObject(i);
|
|
|
- String jsonKey = title.getString("jsonKey");
|
|
|
- String headerName = title.getString("headerName");
|
|
|
- rowHead.add(jsonKey);
|
|
|
- writer.addHeaderAlias(jsonKey, headerName);
|
|
|
- }
|
|
|
- // isWriteKeyAsHead为true的时候自动添加表头,与writeHeadRow不能同时存在,否则为双表头
|
|
|
- writer.writeHeadRow(rowHead);
|
|
|
- // 表头冻结
|
|
|
- writer.setFreezePane(1);
|
|
|
- writer.setOnlyAlias(true);
|
|
|
- // setOnlyAlias必须在Write之前添加,否则总会在第一列多产生一个表头,也就是是说事后诸葛亮是不生效的
|
|
|
- writer.write(content, false);
|
|
|
- // 此方法必须在指定列数据完全写出后调用才有效
|
|
|
- // writer.autoSizeColumnAll(); write方法中列数量变成了-1,导致autoSizeColumnAll不生效
|
|
|
- for (int i = 0; i < rowHead.size(); i++) {
|
|
|
- // 调整每一列宽度
|
|
|
- sheet.autoSizeColumn((short) i);
|
|
|
- // 解决自动设置列宽中文失效的问题
|
|
|
- int columnWidth = (sheet.getColumnWidth(i) * 16 / 10) > 25000 ? 25000 : (sheet.getColumnWidth(i) * 16 / 10);
|
|
|
- sheet.setColumnWidth(i, columnWidth);
|
|
|
+ boolean firstSheet = true;
|
|
|
+ for (int i = 0; i < parseArray.size(); i++) {
|
|
|
+ JSONObject parseObject = parseArray.getJSONObject(i);
|
|
|
+ String code = parseObject.getString("code");
|
|
|
+ String data_type = parseObject.getString("data_type");
|
|
|
+ JSONArray datas = parseObject.getJSONArray("datas");
|
|
|
+ for (int ii = 0; ii < datas.size(); ii++) {
|
|
|
+ JSONObject data = datas.getJSONObject(ii);
|
|
|
+ data.put("data_time", sdf.format(sdf_.parse(data.getString("data_time"))));
|
|
|
+ }
|
|
|
+ if (firstSheet) {
|
|
|
+ writer.renameSheet(code + "-" + data_type);
|
|
|
+ firstSheet = false;
|
|
|
+ } else {
|
|
|
+ writer.setSheet(code + "-" + data_type);
|
|
|
+ }
|
|
|
+
|
|
|
+ SXSSFSheet sheet = (SXSSFSheet) writer.getSheet();
|
|
|
+ sheet.trackAllColumnsForAutoSizing();
|
|
|
+ List<String> rowHead = new ArrayList<String>();
|
|
|
+ {
|
|
|
+ String jsonKey = "data_time";
|
|
|
+ String headerName = "data_time";
|
|
|
+ rowHead.add(headerName);
|
|
|
+ writer.addHeaderAlias(jsonKey, headerName);
|
|
|
+ }
|
|
|
+ {
|
|
|
+ String jsonKey = "data_value";
|
|
|
+ String headerName = "data_value";
|
|
|
+ rowHead.add(headerName);
|
|
|
+ writer.addHeaderAlias(jsonKey, headerName);
|
|
|
+ }
|
|
|
+ // isWriteKeyAsHead为true的时候自动添加表头,与writeHeadRow不能同时存在,否则为双表头
|
|
|
+ writer.writeHeadRow(rowHead);
|
|
|
+ // 表头冻结
|
|
|
+ writer.setFreezePane(1);
|
|
|
+ writer.setOnlyAlias(true);
|
|
|
+ // setOnlyAlias必须在Write之前添加,否则总会在第一列多产生一个表头,也就是是说事后诸葛亮是不生效的
|
|
|
+ writer.write(datas, false);
|
|
|
+ // 此方法必须在指定列数据完全写出后调用才有效
|
|
|
+ // writer.autoSizeColumnAll(); write方法中列数量变成了-1,导致autoSizeColumnAll不生效
|
|
|
+ for (int ii = 0; ii < rowHead.size(); ii++) {
|
|
|
+ // 调整每一列宽度
|
|
|
+ sheet.autoSizeColumn((short) ii);
|
|
|
+ // 解决自动设置列宽中文失效的问题
|
|
|
+ int columnWidth = (sheet.getColumnWidth(ii) * 16 / 10) > 25000 ? 25000 : (sheet.getColumnWidth(ii) * 16 / 10);
|
|
|
+ sheet.setColumnWidth(ii, columnWidth);
|
|
|
+ }
|
|
|
}
|
|
|
xlsFileName = URLEncoder.encode(xlsFileName, "UTF-8");
|
|
|
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
|