apache poi做的一个到出到导出Excel功能
来源:互联网 发布:鼠标宏编程有啥用 编辑:程序博客网 时间:2024/06/05 18:03
/** 创建人:cwq* 创建时间 :20160105* 创建用于 用于临时文件的下载** */import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.*;// import com.sunrise.foundation.utils.RequestWrapper;// import com.sunrise.framework.core.ApplicationManager;// import com.sunrise.framework.struts2.Header;// import com.sunrise.framework.struts2.JsonObject;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.hssf.util.HSSFColor;import org.apache.poi.ss.usermodel.CellStyle;import org.apache.poi.ss.usermodel.Workbook;public class DownloadExcel { // private RequestWrapper request = ApplicationManager.getRequest(); //tomcat地址 // private String Path = request.getSession().getServletContext().getRealPath("/"); private File resultFile = null; private String sheetName = "sheet"; private int sheetRow = 0; private String fileName=null; private String [] gaugeHead = {"第一列","第二列"}; private String [][] cellValue = {{"1","2"},{"1","2"},{"3","4"}}; private Map<String, Object> params = new HashMap<String, Object>(); private String gauge = null; private String cell = null;// public JsonObject main()throws Exception{// if(request.getParameter("sheetName")!=null) sheetName = request.getParameter("sheetName");// if(request.getParameter("sheetRow")!=null) sheetRow = Integer.parseInt(request.getParameter("sheetRow"));// if(request.getParameter("gaugeHead")!=null) gauge = request.getParameter("gaugeHead");// if(request.getParameter("cellValue")!=null) cell = request.getParameter("cellValue");// showParams(request);// System.out.println("======"+gauge+"=======");// System.out.println("===="+cell+"==========");// // sheetRow=2;// deleteFile(new File(Path+"/uploadfile/download/DownloadExcel/"),60*30);//删除30分钟前的文件// // deleteFile(new File(Path+"/uploadfile/download/DownloadExcel/result201601060941462.xlsx"),0);// return export(sheetName, sheetRow, gaugeHead, cellValue);// } /* * 删除删除本文件 * @fileName 文件名字 * */ // public JsonObject Delete(){ // if(request.getParameter("fileName")!=null){ // fileName=request.getParameter("fileName"); // deleteFile(new File(Path+"/uploadfile/download/DownloadExcel/"+fileName+".xls"),1); // params.put("fileName",fileName); // return new JsonObject(new Header(0, "success"), params); // }else{ // params.put("message","文件已经删除"); // return new JsonObject(new Header(0, "false"), params); // } // } /* * 测试直接调用方法 * * */ public void exportExcel() throws Exception{ exportExcel(null,null); } /* * 直接调用方法 * * */// public JsonObject exportExcel(String [] gaugeHead,List cellValue) throws Exception{// //// List list = new ArrayList();// // List list = new ArrayList();// // String [] str ={"8986061509000064555","已经初始化该数据,并且更新"};// // String [] str2 ={"8986061509000064558","已经初始化该数据,并且更新"};// // list.add(str);// // list.add(str2);// // ToList(list);// return export(sheetName, sheetRow, gaugeHead, ToList(cellValue));// } /* * 转为二数组 * */ private String[][] ToList( List list){ int listLength = list.size(); Object[] listArray = list.toArray(); String[][] arrList = new String[listLength][]; for(int i=0;i<listArray.length;i++){ arrList[i]=(String[]) listArray[i]; } return arrList; } /* * 用于导出xlsx 文件 * @sheetName 页的名字 * @sheetRow 多少行一个页 * @gaugeHead 表头 * @cellValue 内容 * */ private String export(String sheetName,int sheetRow,String [] gaugeHead,String [][] cellValue) throws IOException { fileName="result"+createTime()+createRandom(); //结果存放文件以及地址 resultFile = new File(Path+"/uploadfile/download/DownloadExcel/"+fileName+".xls"); // 创建工作簿 HSSFWorkbook wb = new HSSFWorkbook(); //工作簿的样式 CellStyle cellType= CellStyle(wb); if(sheetRow>0) { int len = cellValue.length;//数据的行数 int yuShu = len%sheetRow;//取余数 int ye = (yuShu==0)?(int)Math.ceil(len/sheetRow):((int)Math.ceil(len/sheetRow)+1);// System.out.println(ye); for(int i=0;i<ye;i++){ String name= (i==0)? sheetName : sheetName+ String.valueOf(i);//页的名字 wb.createSheet(name);//创建页 gaugeHead(wb.getSheet(name), cellType, gaugeHead);//表头 CellValue(wb.getSheet(name), cellType,setPage(i,cellValue,sheetRow,ye,yuShu));//设置内容 } }else { // 创建页 HSSFSheet sheet = wb.createSheet(sheetName); gaugeHead(sheet, cellType, gaugeHead);//表头 CellValue(sheet, cellType, cellValue);//设置内容 } FileOutputStream os = new FileOutputStream(resultFile); //保存工作簿 wb.write(os); os.flush(); os.close(); // params.put("fileName",fileName); // return new JsonObject(new Header(0, "success"), params); return fileName; } /* * 处理分页的数据 * @page 页码 * @arr 存进来的数据 * @sheetRow 多少行一页 * @ye 共多少页 * @yuShu 最后一页多少个 * */ private String[][] setPage(int page,String[][] arr,int sheetRow,int ye,int yuShu){// System.out.println("page:"+page+",arr:"+arr[0][0]+",sheetRow:"+sheetRow) int startNum =page*sheetRow;//开始数据 int endNum =(page+1)*sheetRow;//结束数据 int l = 0; if(page==(ye-1)){//最后一页 if(yuShu!=0){//不是整除 l = yuShu; endNum = page*sheetRow+yuShu; }else{ l = (page+1)*sheetRow-page*sheetRow; } }else{ l = (page+1)*sheetRow-page*sheetRow; }// System.out.println("长度:"+l+"endNum:"+endNum); String[][] newArr = new String[l][]; int index = 0; for(int i=startNum;i<endNum;i++){ int len = arr[i].length; String[] arrRow = new String[len]; for(int j=0;j<len;j++){ arrRow[j]=arr[i][j]; } newArr[index]=arrRow; index++; } return newArr; } /* * 删除文件 * @file 文件 * @time 删前时间 单位s * */ private void deleteFile(File file,int time) {// System.out.println(file.isFile()); time = (time==0)?30:time; try { if (!file.isFile()) {//不是文件// System.out.println(file.listFiles()); File[] tempList =file.listFiles(); for (int i = 0; i < tempList.length; i++) { if (tempList[i].isFile()) { if (canDeleteFile(tempList[i],time)) { delete(tempList[i],"文件"); } } if (tempList[i].isDirectory()) { if (canDeleteFile(tempList[i],time)) { delete(tempList[i],"文件夹"); } } } }else{ delete(file,"文件"); } } catch (Exception e) { System.out.println("删除文件失败!"+ e); } } /* * 文件删除动作 * */ private void delete(File file,String name){ if (file.delete()) { System.out.println(name+":" + file.getName() + "删除成功!"); } else { System.out.println(name+":" + file.getName() + "删除失败!此文件可能正在被使用"); } } /* * 计算文件时间 * @file 文件 * @time 删前时间 单位s * */ private boolean canDeleteFile(File file,int time) { Date date = new Date(); long lastUpTime = file.lastModified() / 1000; long secondsOfOneMinute = time; //可删除文件的时间 long canDelTime = date.getTime() / 1000 - secondsOfOneMinute; if(lastUpTime <= canDelTime) { return true; } return false; } /* * 创建时间 * 时分秒 * */ private String createTime(){ SimpleDateFormat format=new SimpleDateFormat("yyyyMMddHHmmss"); return format.format(new Date()); } private int createRandom(){ return (int)(Math.random()*10); } /* * 创建工作簿的样式 * @wb 工作簿 * */ private CellStyle CellStyle(Workbook wb){ CellStyle cellType = null; cellType = wb.createCellStyle(); cellType.setBorderTop(HSSFCellStyle.BORDER_THIN); cellType.setBorderBottom(HSSFCellStyle.BORDER_THIN); cellType.setBorderLeft(HSSFCellStyle.BORDER_THIN); cellType.setBorderRight(HSSFCellStyle.BORDER_THIN); cellType.setVerticalAlignment(HSSFCellStyle.ALIGN_CENTER); // 设置单元格垂直方向对其方式 cellType.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平 cellType.setFillForegroundColor(HSSFColor.WHITE.index); cellType.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); return cellType; } /* * 设置导出数据 * @sheet 工作簿的页 * @cellType 工作簿的样式 * @cellValue 表头数组 * */ private void CellValue(HSSFSheet sheet,CellStyle cellType,String[][] cellValue){ HSSFRow row = null; HSSFCell cell = null; for (int i=0;i<cellValue.length;i++){ row = sheet.createRow(i+1); // 第二行 int len = cellValue[i].length; for(int j=0;j<len;j++){ //列 cell = row.createCell(j); // 单元格样式 cell.setCellStyle(cellType); // 单元格的值 cell.setCellValue(cellValue[i][j]); } } } /* * 设置导出的表头 * @sheet 工作簿的页 * @cellType 工作簿的样式 * @gaugeHead 表头数组 * */ private void gaugeHead(HSSFSheet sheet,CellStyle cellType,String[] gaugeHead){ HSSFRow row = null; HSSFCell cell = null; row = sheet.createRow(0); // 第一行 for (int i=0;i<gaugeHead.length;i++){ sheet.autoSizeColumn(i, true); sheet.setColumnWidth(i,gaugeHead[i].getBytes().length*2*256); // 列 cell = row.createCell(i); // 单元格样式 cell.setCellStyle(cellType); // 单元格的值 cell.setCellValue(gaugeHead[i]); } } /* * 参数打印调试 * */ private void showParams(RequestWrapper request) { Map map = new HashMap(); Enumeration paramNames = request.getParameterNames(); while (paramNames.hasMoreElements()) { String paramName = (String) paramNames.nextElement(); String[] paramValues = request.getParameterValues(paramName); if (paramValues.length == 1) { String paramValue = paramValues[0]; if (paramValue.length() != 0) { map.put(paramName, paramValue); } } } Set<Map.Entry<String, String>> set = map.entrySet(); System.out.println("------------------------------"); for (Map.Entry entry : set) { System.out.println(entry.getKey() + ":" + entry.getValue()); } System.out.println("------------------------------"); } }
0 0
- apache poi做的一个到出到导出Excel功能
- Apache-POI实现Excel文档的导出下载功能
- 使用Apache POI,实现导出Excel的功能
- Apache-POI实现Excel文档的导出下载功能
- apache poi导出excel
- Apache POI导出Excel
- 使用Apache的poi导出Excel
- Apache POI实现数据的Excel导出
- 一个用poi导出excel的例子
- 一个基于poi的excel导出程序
- Apache POI导出Excel文件
- Apache POI导出Excel工具
- Apache POI实现导出EXcel
- Apache POI 导出Excel笔记
- 利用POI做导出EXCEL
- 使用vo注释做一个poi导出功能
- POI(JAVA Excel导出功能)
- POI的excel导出
- Android Studio 插件推荐(合集)
- BOOST内存管理(二) --- boost::pool
- Hadoop : Ubuntu14.04 amd64 安装伪分布式集群环境
- thread dump 解决性能问题一例
- 快速排序
- apache poi做的一个到出到导出Excel功能
- 实时同步,增量ETL方案分享(源表含时间戳,做逻辑删除)
- C语言之头文件包含问题
- 解决flashDevelop发布的swf访问本地资源报错
- java类在clob表中使用json格式的存取
- 查找表中的重复行
- Sublime text 3最新版破解方法
- java web应用浏览器访问异常ERR_INCOMPLETE_CHUNKED_ENCODING
- JavaScript 对象(一切皆对象)