java poi excel 图表_Java用POI实现根据Excel表格模板生成新的Excel并实现数据输出
一、
模板excel
結果excel
二、
項目所需jar包
poi-3.11-20141221.jar
poi-examples-3.11-20141221.jar
poi-excelant-3.11-20141221.jar
poi-ooxml-3.11-20141221.jar
poi-ooxml-schemas-3.11-20141221.jar
poi-scratchpad-3.11-20141221.jar
xmlbeans-2.6.0.jar
curvesapi-1.04.jar
三、項目源代碼
controller部分/**導出到excel * @param * @throws Exception */ @RequestMapping(value="/excel") public ModelAndView exportExcel() throws Exception{ logBefore(logger, Jurisdiction.getUsername()+"導出Excel到excel"); if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} ModelAndView mv; //獲取頁面表單傳遞過來的參數 PageData pd = this.getPageData(); //dataMap作為model,存入數據 Map dataMap = new HashMap<>(); //存儲模板Excel路徑和生成Excel路徑 List urls=new ArrayList<>(); //存儲所有heads List heads=new ArrayList<>(); //存儲尾部的數值 List tails=new ArrayList<>(); //獲取當前日期 Date date = new Date(); //模板Excel文件路徑 //后綴為xls的文件路徑 String demoUrl=ExcelController.class.getClassLoader().getResource("reportxls/ExportExcel.xls").getPath().replaceFirst("/",""); //按日期設定當前Excel表格的名字 String fileName = Tools.date2Str(date, "yyyyMMddHHmmss"); //生成Excel文件名稱 //String excelUrl=fileName+".xlsx"; //后綴為xlsx文件的路徑 String excelUrl=fileName+".xls"; //將路徑添加到urls當中 urls.add(demoUrl); urls.add(excelUrl); //將urls路徑存入到dataMap當中,作為model傳入到視圖中 dataMap.put("urls",urls); //表格所需要的標題1 String head1="標題1"; //表格所需要的標題2 String head2="標題2"; //表格所需要的標題3 String head3="標題3"; //表格所需要的標題4 String head4="標題4"; //表格所需要的標題5 //String head5="標題5"; //存入這些標題 heads.add(head1); heads.add(head2); heads.add(head3); heads.add(head4); //heads.add(head5); //表格所需要的尾部1 String tail1="尾部1"; //存入表格所需要的尾部 tails.add(tail1); //表格所需要的尾部2 String tail2="尾部2"; //存入表格所需的尾部 tails.add(tail2); //將tails存入到dataGrip中 dataMap.put("tails",tails); //將標題存放到存入到dataGrip當中 dataMap.put("heads",heads); //獲取當前Excel表格所需要的內容 List varOList = excelService.listAll(pd); dataMap.put("varOList",varOList); //創建需要渲染的Excel表格視圖 //進行文件后綴類型判斷 if (demoUrl.endsWith(".xls")){ XlsExcelView erv=new XlsExcelView(); mv=new ModelAndView(erv,dataMap); }else { XlsxExcelView erv=new XlsxExcelView(); mv=new ModelAndView(erv,dataMap); } return mv; }
視圖部分public class XlsExcelView extends AbstractXlsView { @Override protected void buildExcelDocument(Map map, Workbook workbook, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { //獲取當前的urls地址 List urls=(List)map.get("urls"); //表格所要存儲的標題 List heads=(List)map.get("heads"); //表格所要存儲的尾部 List tails=(List)map.get("tails"); //獲取查詢到的結果集 List varOList=(List)map.get("varOList"); //獲取主表信息 PageData mainInfo=(PageData)map.get("mainInfo"); //創建Excel文件的輸入流對象 FileInputStream fis=new FileInputStream(urls.get(0)); //根據模板創建Excel工作簿 workbook=new HSSFWorkbook(fis); //創建Excel文件輸出流對象 OutputStream out=httpServletResponse.getOutputStream(); httpServletResponse.setContentType("application/octet-stream"); httpServletResponse.setHeader("Content-Disposition","attachment;filename="+urls.get(1)); //將workboo強轉成需要的HSSFBook HSSFWorkbook HSSFWorkbook=(HSSFWorkbook)workbook; //獲取創建工作簿的第一頁 HSSFSheet sheet=HSSFWorkbook.getSheetAt(0); //給指定的sheet命名 HSSFWorkbook.setSheetName(0,"dataSheet"); //初始化當前的索引,設為當前sheet的最后一行行數 int currentLastRowIndex=sheet.getLastRowNum(); //存儲當前表格的樣式 HSSFCellStyle cellStyle=HSSFWorkbook.createCellStyle(); //獲取當前工作簿的行數 int totalRows=sheet.getPhysicalNumberOfRows(); /***********************遍歷模板sheet,根據當中的設定進行賦值*******************************************************************/ for (int i=0;i
總結
以上是生活随笔為你收集整理的java poi excel 图表_Java用POI实现根据Excel表格模板生成新的Excel并实现数据输出的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 离散数学反对称关系_《离散数学》学习记录
- 下一篇: linux就业技术指导,学linux前景