1. 程式人生 > >JAVA中EXLS導出功能實現 - 代碼

JAVA中EXLS導出功能實現 - 代碼

vertica tco cati center ali 基於 getpara void ++

JAVA中EXLS導出功能實現 - 代碼:

基於SSH框架下的exls導出

public void exportExl() throws Exception{
        String text = (String) super.getRequest().getParameter("text");
        String flowid="051021";//(String)super.getRequest().getParameter("flowid");
        
         ResultPage resulta=queryDataService.getexportkey(flowid, text);
         
//獲取主鍵屬性 List<String> list=resulta.getExportlist(); //獲取修改屬性 List<String> reviselist=resulta.getExportreviselist(); //獲取屬性中文 List<String>cnlist=resulta.getExportkeycnlist(); //獲取已選擇數據 List datalist=resulta.getList(); //裝載主鍵信息及數據
/** * 裝載的數據類型為List<List<String>> */ List<List<String>> data=new ArrayList(); for(int i=0;i<datalist.size();i++){ Map map=(Map)datalist.get(i); List<String> datas=new ArrayList(); for(int
n=0;n<list.size();n++){ String key=list.get(n); String value=String.valueOf(map.get(key)); datas.add(value); } data.add(datas); } List<List<String>> revisedata=new ArrayList(); for(int i=0;i<datalist.size();i++){ Map map=(Map)datalist.get(i); List<String> revise=new ArrayList(); for(int n=0;n<reviselist.size();n++){ String key=reviselist.get(n); // System.out.println("key>>>>>>>>>"+key); String value=String.valueOf(map.get(key)); revise.add(value); } revisedata.add(revise); } HttpServletResponse response=super.getResponse(); ServletOutputStream out=null; response.setContentType("applicatin/vnd.ms-excel"); HSSFWorkbook workbook = new HSSFWorkbook();//創建Excel文件(Workbook) //設置表名 String classname="基礎調整-"+text+""; //表名導出中文格式化 String name=new String(classname.getBytes("gbk"),"iso-8859-1"); response.setHeader("content-disposition", "attchment;filename="+name+".xls"); HSSFSheet sheet = workbook.createSheet("基礎調整");//創建工作表(Sheet) try { //創建表頭屬性 第一行 sheet.setColumnWidth(0, 5120);//設置第i列的寬度是31個字符寬度 HSSFRow row = sheet.createRow(0); for(int n=0;n<cnlist.size();n++){ String cnkeys=cnlist.get(n); HSSFCellStyle style=workbook.createCellStyle(); style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中 style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中 HSSFFont font = workbook.createFont(); font.setFontName("仿宋");//設置字體名稱 font.setFontHeightInPoints((short)12);//設置字號 font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗體顯示 style.setFont(font); // HSSFCell cell = row.createCell(n); cell.setCellValue(cnkeys); cell.setCellStyle(style); } //創建剩下行並添加值 for (int i=1;i<data.size()+1;i++){ List<String> strings = data.get(i-1); // row = sheet.createRow(i); sheet.setColumnWidth(i, 5120);//設置第i列的寬度是31個字符寬度 //System.out.println("strings>>>>>>>>>"+data.size()); //添加主鍵列數據 for (int j=0;j<strings.size();j++){ HSSFCellStyle style=workbook.createCellStyle(); style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中 style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中 HSSFFont font = workbook.createFont(); font.setFontName("仿宋");//設置字體名稱 font.setFontHeightInPoints((short)12);//設置字號 font.setColor(HSSFColor.RED.index);//設置字體顏色 style.setFont(font); String str= strings.get(j); // HSSFCell cell = row.createCell(j); cell.setCellValue(str); cell.setCellStyle(style); } //添加可修改屬性數據 int k=list.size(); //System.out.println("revisedata>>>>>>>>>"+revisedata.size()); Object obj=JSONArray.fromObject(revisedata); System.out.println("revisedata>>>>>>>>>"+obj.toString()); List<String> str= revisedata.get(i-1); for(int w=0;w<str.size();w++){ HSSFCellStyle style=workbook.createCellStyle(); style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中 style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中 HSSFFont font = workbook.createFont(); font.setFontName("仿宋");//設置字體名稱 font.setFontHeightInPoints((short)12);//設置字號 style.setFont(font); HSSFCell cell = row.createCell(k++); String value=str.get(w); cell.setCellValue(value); cell.setCellStyle(style); } } //添加尾部 備註 HSSFRow lastrow = sheet.createRow(data.size()+2); HSSFCell cells=lastrow.createCell(0); HSSFCellStyle styles=workbook.createCellStyle(); styles.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中 styles.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中 HSSFFont font = workbook.createFont(); font.setFontName("仿宋");//設置字體名稱 font.setFontHeightInPoints((short)20);//設置字號 font.setColor(HSSFColor.RED.index);//設置字體顏色 styles.setFont(font); cells.setCellValue("備註:紅色字體區域為不可更改主鍵。請不要修改,以免發生錯誤,謝謝!"); cells.setCellStyle(styles); CellRangeAddress region=new CellRangeAddress(data.size()+2,data.size()+2, 0, cnlist.size()); sheet.addMergedRegion(region); out=response.getOutputStream(); // FileOutputStream out = new FileOutputStream(filePath); workbook.write(out);//保存Excel文件 } catch (IOException e) { // TODO: handle exception System.out.println("導出失敗!"); }finally{ try { out.flush(); out.close();//關閉文件流 } catch (Exception e) { // TODO: handle exception } } System.out.println("OK!"); }

JAVA中EXLS導出功能實現 - 代碼