|
|
@ -426,50 +426,55 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService { |
|
|
|
// }else {
|
|
|
|
// title="事故路段分布图-济南方向";
|
|
|
|
// }
|
|
|
|
PoiUtil.createHeading2(doc, title); |
|
|
|
XWPFTable table = doc.createTable(map.size()+1,2); |
|
|
|
//列宽自动分割
|
|
|
|
CTTblWidth infoTableWidth = table.getCTTbl().addNewTblPr().addNewTblW(); |
|
|
|
infoTableWidth.setType(STTblWidth.DXA); |
|
|
|
infoTableWidth.setW(BigInteger.valueOf(UniversalEnum.NINE_THOUSAND_AND_SEVENTY_TWO.getNumber())); |
|
|
|
//插入表头
|
|
|
|
setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), "路段"); |
|
|
|
setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ONE.getNumber()), "事故发生数量"); |
|
|
|
|
|
|
|
List<Map.Entry<String, Integer>> entries = new ArrayList<>(map.entrySet()); |
|
|
|
//excel
|
|
|
|
for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++){ |
|
|
|
setTableFonts(table.getRow(i+1).getCell(0), entries.get(i).getKey()); |
|
|
|
setTableFonts(table.getRow(i+1).getCell(1), entries.get(i).getValue().toString()); |
|
|
|
} |
|
|
|
try{ |
|
|
|
// 复制Word模板
|
|
|
|
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.CHAR_SECTION.getValue()); |
|
|
|
XWPFDocument copiedTemplate = new XWPFDocument(inputStream); |
|
|
|
//获取word中所有图表对象
|
|
|
|
List<XWPFChart> charts = copiedTemplate.getCharts(); |
|
|
|
XWPFChart chart = charts.get(UniversalEnum.ZERO.getNumber()); |
|
|
|
XSSFWorkbook workbook = chart.getWorkbook(); |
|
|
|
XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber()); |
|
|
|
//系列信息
|
|
|
|
String[] singleBarSeriesNames = {"数量"}; |
|
|
|
//分类信息
|
|
|
|
if (map != null && map.size() != UniversalEnum.ZERO.getNumber()){ |
|
|
|
PoiUtil.createHeading2(doc, title); |
|
|
|
XWPFTable table = doc.createTable(map.size()+1,2); |
|
|
|
//列宽自动分割
|
|
|
|
CTTblWidth infoTableWidth = table.getCTTbl().addNewTblPr().addNewTblW(); |
|
|
|
infoTableWidth.setType(STTblWidth.DXA); |
|
|
|
infoTableWidth.setW(BigInteger.valueOf(UniversalEnum.NINE_THOUSAND_AND_SEVENTY_TWO.getNumber())); |
|
|
|
//插入表头
|
|
|
|
setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), "路段"); |
|
|
|
setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ONE.getNumber()), "事故发生数量"); |
|
|
|
|
|
|
|
List<Map.Entry<String, Integer>> entries = new ArrayList<>(map.entrySet()); |
|
|
|
//excel
|
|
|
|
for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++){ |
|
|
|
sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()).setCellValue(entries.get(i).getKey()); |
|
|
|
sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ONE.getNumber()).setCellValue(Long.parseLong(entries.get(i).getValue().toString())); |
|
|
|
setTableFonts(table.getRow(i+1).getCell(0), entries.get(i).getKey()); |
|
|
|
setTableFonts(table.getRow(i+1).getCell(1), entries.get(i).getValue().toString()); |
|
|
|
} |
|
|
|
for (int i = sheet.getLastRowNum(); i > entries.size();i--){ |
|
|
|
sheet.removeRow(sheet.getRow(i)); |
|
|
|
try{ |
|
|
|
// 复制Word模板
|
|
|
|
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.CHAR_SECTION.getValue()); |
|
|
|
XWPFDocument copiedTemplate = new XWPFDocument(inputStream); |
|
|
|
//获取word中所有图表对象
|
|
|
|
List<XWPFChart> charts = copiedTemplate.getCharts(); |
|
|
|
XWPFChart chart = charts.get(UniversalEnum.ZERO.getNumber()); |
|
|
|
XSSFWorkbook workbook = chart.getWorkbook(); |
|
|
|
XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber()); |
|
|
|
//系列信息
|
|
|
|
String[] singleBarSeriesNames = {"数量"}; |
|
|
|
//分类信息
|
|
|
|
for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++){ |
|
|
|
sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()).setCellValue(entries.get(i).getKey()); |
|
|
|
sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ONE.getNumber()).setCellValue(Long.parseLong(entries.get(i).getValue().toString())); |
|
|
|
} |
|
|
|
for (int i = sheet.getLastRowNum(); i > entries.size();i--){ |
|
|
|
sheet.removeRow(sheet.getRow(i)); |
|
|
|
} |
|
|
|
PoiUtil.wordExportChar(chart, title, singleBarSeriesNames,sheet ); |
|
|
|
// 追加到同一个Word文档中
|
|
|
|
mergeChart(chart,doc); |
|
|
|
// 关闭复制的模板文档
|
|
|
|
copiedTemplate.close(); |
|
|
|
|
|
|
|
}catch (Exception e){ |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
PoiUtil.wordExportChar(chart, title, singleBarSeriesNames,sheet ); |
|
|
|
// 追加到同一个Word文档中
|
|
|
|
mergeChart(chart,doc); |
|
|
|
// 关闭复制的模板文档
|
|
|
|
copiedTemplate.close(); |
|
|
|
|
|
|
|
}catch (Exception e){ |
|
|
|
e.printStackTrace(); |
|
|
|
}else { |
|
|
|
addDescription(doc, UniversalEnum.NO_DATA_AVAILABLE.getValue()); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
//事故类型分析导出
|
|
|
|
@Override |
|
|
@ -482,50 +487,54 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService { |
|
|
|
// }else {
|
|
|
|
// title="事件类型分布图-济南方向";
|
|
|
|
// }
|
|
|
|
PoiUtil.createHeading2(doc, title); |
|
|
|
XWPFTable table = doc.createTable(map.size()+1,2); |
|
|
|
//列宽自动分割
|
|
|
|
CTTblWidth infoTableWidth = table.getCTTbl().addNewTblPr().addNewTblW(); |
|
|
|
infoTableWidth.setType(STTblWidth.DXA); |
|
|
|
infoTableWidth.setW(BigInteger.valueOf(UniversalEnum.NINE_THOUSAND_AND_SEVENTY_TWO.getNumber())); |
|
|
|
//插入表头
|
|
|
|
setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), "类型"); |
|
|
|
setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ONE.getNumber()), "数量"); |
|
|
|
|
|
|
|
List<Map.Entry<String, Integer>> entries = new ArrayList<>(map.entrySet()); |
|
|
|
//excel
|
|
|
|
for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++){ |
|
|
|
setTableFonts(table.getRow(i+1).getCell(0), entries.get(i).getKey()); |
|
|
|
setTableFonts(table.getRow(i+1).getCell(1), entries.get(i).getValue().toString()); |
|
|
|
} |
|
|
|
try{ |
|
|
|
// 复制Word模板
|
|
|
|
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.TYPE_ANALYSIS.getValue()); |
|
|
|
XWPFDocument copiedTemplate = new XWPFDocument(inputStream); |
|
|
|
|
|
|
|
//获取word中所有图表对象
|
|
|
|
List<XWPFChart> charts = copiedTemplate.getCharts(); |
|
|
|
XWPFChart chart = charts.get(UniversalEnum.ZERO.getNumber()); |
|
|
|
XSSFWorkbook workbook = chart.getWorkbook(); |
|
|
|
XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber()); |
|
|
|
//系列信息
|
|
|
|
String[] singleBarSeriesNames = {"事件类型"}; |
|
|
|
//分类信息
|
|
|
|
for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++){ |
|
|
|
sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()).setCellValue(entries.get(i).getKey()); |
|
|
|
sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ONE.getNumber()).setCellValue(Long.parseLong(entries.get(i).getValue().toString())); |
|
|
|
if (map != null && map.size() != UniversalEnum.ZERO.getNumber()) { |
|
|
|
PoiUtil.createHeading2(doc, title); |
|
|
|
XWPFTable table = doc.createTable(map.size() + 1, 2); |
|
|
|
//列宽自动分割
|
|
|
|
CTTblWidth infoTableWidth = table.getCTTbl().addNewTblPr().addNewTblW(); |
|
|
|
infoTableWidth.setType(STTblWidth.DXA); |
|
|
|
infoTableWidth.setW(BigInteger.valueOf(UniversalEnum.NINE_THOUSAND_AND_SEVENTY_TWO.getNumber())); |
|
|
|
//插入表头
|
|
|
|
setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), "类型"); |
|
|
|
setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ONE.getNumber()), "数量"); |
|
|
|
|
|
|
|
List<Map.Entry<String, Integer>> entries = new ArrayList<>(map.entrySet()); |
|
|
|
//excel
|
|
|
|
for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++) { |
|
|
|
setTableFonts(table.getRow(i + 1).getCell(0), entries.get(i).getKey()); |
|
|
|
setTableFonts(table.getRow(i + 1).getCell(1), entries.get(i).getValue().toString()); |
|
|
|
} |
|
|
|
for (int i = sheet.getLastRowNum(); i > entries.size();i--){ |
|
|
|
sheet.removeRow(sheet.getRow(i)); |
|
|
|
try { |
|
|
|
// 复制Word模板
|
|
|
|
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.TYPE_ANALYSIS.getValue()); |
|
|
|
XWPFDocument copiedTemplate = new XWPFDocument(inputStream); |
|
|
|
|
|
|
|
//获取word中所有图表对象
|
|
|
|
List<XWPFChart> charts = copiedTemplate.getCharts(); |
|
|
|
XWPFChart chart = charts.get(UniversalEnum.ZERO.getNumber()); |
|
|
|
XSSFWorkbook workbook = chart.getWorkbook(); |
|
|
|
XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber()); |
|
|
|
//系列信息
|
|
|
|
String[] singleBarSeriesNames = {"事件类型"}; |
|
|
|
//分类信息
|
|
|
|
for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++) { |
|
|
|
sheet.getRow(i + UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()).setCellValue(entries.get(i).getKey()); |
|
|
|
sheet.getRow(i + UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ONE.getNumber()).setCellValue(Long.parseLong(entries.get(i).getValue().toString())); |
|
|
|
} |
|
|
|
for (int i = sheet.getLastRowNum(); i > entries.size(); i--) { |
|
|
|
sheet.removeRow(sheet.getRow(i)); |
|
|
|
} |
|
|
|
PoiUtil.wordExportChar(chart, title, singleBarSeriesNames, sheet); |
|
|
|
// 追加到同一个Word文档中
|
|
|
|
mergeChart(chart, doc); |
|
|
|
// 关闭复制的模板文档
|
|
|
|
copiedTemplate.close(); |
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
PoiUtil.wordExportChar(chart, title, singleBarSeriesNames,sheet ); |
|
|
|
// 追加到同一个Word文档中
|
|
|
|
mergeChart(chart,doc); |
|
|
|
// 关闭复制的模板文档
|
|
|
|
copiedTemplate.close(); |
|
|
|
|
|
|
|
}catch (Exception e){ |
|
|
|
e.printStackTrace(); |
|
|
|
}else { |
|
|
|
addDescription(doc, UniversalEnum.NO_DATA_AVAILABLE.getValue()); |
|
|
|
} |
|
|
|
} |
|
|
|
//事故拥堵时间导出
|
|
|
@ -533,50 +542,54 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService { |
|
|
|
public void accidentCongestedTimeExport(XWPFDocument doc, DcSdhsEventQuery dcSdhsEventQuery) { |
|
|
|
Map<String, String> map =accidentCongestedTime(dcSdhsEventQuery); |
|
|
|
String title="事故拥堵时长分布图"; |
|
|
|
PoiUtil.createHeading2(doc, title); |
|
|
|
XWPFTable table = doc.createTable(map.size()+1,2); |
|
|
|
//列宽自动分割
|
|
|
|
CTTblWidth infoTableWidth = table.getCTTbl().addNewTblPr().addNewTblW(); |
|
|
|
infoTableWidth.setType(STTblWidth.DXA); |
|
|
|
infoTableWidth.setW(BigInteger.valueOf(UniversalEnum.NINE_THOUSAND_AND_SEVENTY_TWO.getNumber())); |
|
|
|
//插入表头
|
|
|
|
setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), "路段"); |
|
|
|
setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ONE.getNumber()), "时长(分钟)"); |
|
|
|
|
|
|
|
List<Map.Entry<String, String>> entries = new ArrayList<>(map.entrySet()); |
|
|
|
//excel
|
|
|
|
for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++){ |
|
|
|
setTableFonts(table.getRow(i+1).getCell(0), entries.get(i).getKey()); |
|
|
|
setTableFonts(table.getRow(i+1).getCell(1), entries.get(i).getValue().toString()); |
|
|
|
} |
|
|
|
try{ |
|
|
|
// 复制Word模板
|
|
|
|
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.CONGESTION_TIME.getValue()); |
|
|
|
XWPFDocument copiedTemplate = new XWPFDocument(inputStream); |
|
|
|
|
|
|
|
//获取word中所有图表对象
|
|
|
|
List<XWPFChart> charts = copiedTemplate.getCharts(); |
|
|
|
XWPFChart chart = charts.get(UniversalEnum.ZERO.getNumber()); |
|
|
|
XSSFWorkbook workbook = chart.getWorkbook(); |
|
|
|
XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber()); |
|
|
|
//系列信息
|
|
|
|
String[] singleBarSeriesNames = {"事故拥堵时长"}; |
|
|
|
//分类信息
|
|
|
|
for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++){ |
|
|
|
sheet.getRow(i + UniversalEnum.ONE.getNumber()).getCell(0).setCellValue(entries.get(i).getKey()); |
|
|
|
sheet.getRow(i + UniversalEnum.ONE.getNumber()).getCell(1).setCellValue(Double.valueOf(entries.get(i).getValue())); |
|
|
|
if (map != null && map.size() != UniversalEnum.ZERO.getNumber()) { |
|
|
|
PoiUtil.createHeading2(doc, title); |
|
|
|
XWPFTable table = doc.createTable(map.size() + 1, 2); |
|
|
|
//列宽自动分割
|
|
|
|
CTTblWidth infoTableWidth = table.getCTTbl().addNewTblPr().addNewTblW(); |
|
|
|
infoTableWidth.setType(STTblWidth.DXA); |
|
|
|
infoTableWidth.setW(BigInteger.valueOf(UniversalEnum.NINE_THOUSAND_AND_SEVENTY_TWO.getNumber())); |
|
|
|
//插入表头
|
|
|
|
setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), "路段"); |
|
|
|
setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ONE.getNumber()), "时长(分钟)"); |
|
|
|
|
|
|
|
List<Map.Entry<String, String>> entries = new ArrayList<>(map.entrySet()); |
|
|
|
//excel
|
|
|
|
for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++) { |
|
|
|
setTableFonts(table.getRow(i + 1).getCell(0), entries.get(i).getKey()); |
|
|
|
setTableFonts(table.getRow(i + 1).getCell(1), entries.get(i).getValue().toString()); |
|
|
|
} |
|
|
|
for (int i = sheet.getLastRowNum(); i > entries.size();i--){ |
|
|
|
sheet.removeRow(sheet.getRow(i)); |
|
|
|
try { |
|
|
|
// 复制Word模板
|
|
|
|
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.CONGESTION_TIME.getValue()); |
|
|
|
XWPFDocument copiedTemplate = new XWPFDocument(inputStream); |
|
|
|
|
|
|
|
//获取word中所有图表对象
|
|
|
|
List<XWPFChart> charts = copiedTemplate.getCharts(); |
|
|
|
XWPFChart chart = charts.get(UniversalEnum.ZERO.getNumber()); |
|
|
|
XSSFWorkbook workbook = chart.getWorkbook(); |
|
|
|
XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber()); |
|
|
|
//系列信息
|
|
|
|
String[] singleBarSeriesNames = {"事故拥堵时长"}; |
|
|
|
//分类信息
|
|
|
|
for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++) { |
|
|
|
sheet.getRow(i + UniversalEnum.ONE.getNumber()).getCell(0).setCellValue(entries.get(i).getKey()); |
|
|
|
sheet.getRow(i + UniversalEnum.ONE.getNumber()).getCell(1).setCellValue(Double.valueOf(entries.get(i).getValue())); |
|
|
|
} |
|
|
|
for (int i = sheet.getLastRowNum(); i > entries.size(); i--) { |
|
|
|
sheet.removeRow(sheet.getRow(i)); |
|
|
|
} |
|
|
|
PoiUtil.wordExportChar(chart, title, singleBarSeriesNames, sheet); |
|
|
|
// 追加到同一个Word文档中
|
|
|
|
mergeChart(chart, doc); |
|
|
|
// 关闭复制的模板文档
|
|
|
|
copiedTemplate.close(); |
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
PoiUtil.wordExportChar(chart, title, singleBarSeriesNames,sheet ); |
|
|
|
// 追加到同一个Word文档中
|
|
|
|
mergeChart(chart,doc); |
|
|
|
// 关闭复制的模板文档
|
|
|
|
copiedTemplate.close(); |
|
|
|
|
|
|
|
}catch (Exception e){ |
|
|
|
e.printStackTrace(); |
|
|
|
}else { |
|
|
|
addDescription(doc, UniversalEnum.NO_DATA_AVAILABLE.getValue()); |
|
|
|
} |
|
|
|
} |
|
|
|
//事故拥堵地点导出
|
|
|
@ -584,50 +597,54 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService { |
|
|
|
public void accidentCongestedLocationExport(XWPFDocument doc, DcSdhsEventQuery dcSdhsEventQuery) { |
|
|
|
Map<String, Integer> map =accidentCongestedLocation(dcSdhsEventQuery); |
|
|
|
String title="事故拥堵地点分布图"; |
|
|
|
PoiUtil.createHeading2(doc, title); |
|
|
|
XWPFTable table = doc.createTable(map.size()+1,2); |
|
|
|
//列宽自动分割
|
|
|
|
CTTblWidth infoTableWidth = table.getCTTbl().addNewTblPr().addNewTblW(); |
|
|
|
infoTableWidth.setType(STTblWidth.DXA); |
|
|
|
infoTableWidth.setW(BigInteger.valueOf(UniversalEnum.NINE_THOUSAND_AND_SEVENTY_TWO.getNumber())); |
|
|
|
//插入表头
|
|
|
|
setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), "地点"); |
|
|
|
setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ONE.getNumber()), "数量"); |
|
|
|
|
|
|
|
List<Map.Entry<String, Integer>> entries = new ArrayList<>(map.entrySet()); |
|
|
|
//excel
|
|
|
|
for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++){ |
|
|
|
setTableFonts(table.getRow(i+1).getCell(0), entries.get(i).getKey()); |
|
|
|
setTableFonts(table.getRow(i+1).getCell(1), entries.get(i).getValue().toString()); |
|
|
|
} |
|
|
|
try{ |
|
|
|
// 复制Word模板
|
|
|
|
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.CONGESTED_LOCATION.getValue()); |
|
|
|
XWPFDocument copiedTemplate = new XWPFDocument(inputStream); |
|
|
|
|
|
|
|
//获取word中所有图表对象
|
|
|
|
List<XWPFChart> charts = copiedTemplate.getCharts(); |
|
|
|
XWPFChart chart = charts.get(UniversalEnum.ZERO.getNumber()); |
|
|
|
XSSFWorkbook workbook = chart.getWorkbook(); |
|
|
|
XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber()); |
|
|
|
//系列信息
|
|
|
|
String[] singleBarSeriesNames = {"事故拥堵地点"}; |
|
|
|
//分类信息
|
|
|
|
for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++){ |
|
|
|
sheet.getRow(i + UniversalEnum.ONE.getNumber()).getCell(0).setCellValue(entries.get(i).getKey()); |
|
|
|
sheet.getRow(i + UniversalEnum.ONE.getNumber()).getCell(1).setCellValue(entries.get(i).getValue()); |
|
|
|
if (map != null && map.size() != UniversalEnum.ZERO.getNumber()) { |
|
|
|
PoiUtil.createHeading2(doc, title); |
|
|
|
XWPFTable table = doc.createTable(map.size() + 1, 2); |
|
|
|
//列宽自动分割
|
|
|
|
CTTblWidth infoTableWidth = table.getCTTbl().addNewTblPr().addNewTblW(); |
|
|
|
infoTableWidth.setType(STTblWidth.DXA); |
|
|
|
infoTableWidth.setW(BigInteger.valueOf(UniversalEnum.NINE_THOUSAND_AND_SEVENTY_TWO.getNumber())); |
|
|
|
//插入表头
|
|
|
|
setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), "地点"); |
|
|
|
setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ONE.getNumber()), "数量"); |
|
|
|
|
|
|
|
List<Map.Entry<String, Integer>> entries = new ArrayList<>(map.entrySet()); |
|
|
|
//excel
|
|
|
|
for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++) { |
|
|
|
setTableFonts(table.getRow(i + 1).getCell(0), entries.get(i).getKey()); |
|
|
|
setTableFonts(table.getRow(i + 1).getCell(1), entries.get(i).getValue().toString()); |
|
|
|
} |
|
|
|
for (int i = sheet.getLastRowNum(); i > entries.size();i--){ |
|
|
|
sheet.removeRow(sheet.getRow(i)); |
|
|
|
try { |
|
|
|
// 复制Word模板
|
|
|
|
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.CONGESTED_LOCATION.getValue()); |
|
|
|
XWPFDocument copiedTemplate = new XWPFDocument(inputStream); |
|
|
|
|
|
|
|
//获取word中所有图表对象
|
|
|
|
List<XWPFChart> charts = copiedTemplate.getCharts(); |
|
|
|
XWPFChart chart = charts.get(UniversalEnum.ZERO.getNumber()); |
|
|
|
XSSFWorkbook workbook = chart.getWorkbook(); |
|
|
|
XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber()); |
|
|
|
//系列信息
|
|
|
|
String[] singleBarSeriesNames = {"事故拥堵地点"}; |
|
|
|
//分类信息
|
|
|
|
for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++) { |
|
|
|
sheet.getRow(i + UniversalEnum.ONE.getNumber()).getCell(0).setCellValue(entries.get(i).getKey()); |
|
|
|
sheet.getRow(i + UniversalEnum.ONE.getNumber()).getCell(1).setCellValue(entries.get(i).getValue()); |
|
|
|
} |
|
|
|
for (int i = sheet.getLastRowNum(); i > entries.size(); i--) { |
|
|
|
sheet.removeRow(sheet.getRow(i)); |
|
|
|
} |
|
|
|
PoiUtil.wordExportChar(chart, title, singleBarSeriesNames, sheet); |
|
|
|
// 追加到同一个Word文档中
|
|
|
|
mergeChart(chart, doc); |
|
|
|
// 关闭复制的模板文档
|
|
|
|
copiedTemplate.close(); |
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
PoiUtil.wordExportChar(chart, title, singleBarSeriesNames,sheet ); |
|
|
|
// 追加到同一个Word文档中
|
|
|
|
mergeChart(chart,doc); |
|
|
|
// 关闭复制的模板文档
|
|
|
|
copiedTemplate.close(); |
|
|
|
|
|
|
|
}catch (Exception e){ |
|
|
|
e.printStackTrace(); |
|
|
|
}else { |
|
|
|
addDescription(doc, UniversalEnum.NO_DATA_AVAILABLE.getValue()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|