java poi操作创建xslx或xsl文件,存本地和进行网络传输两种方式集成
1 package com.java.zxf.util; 2 3 import java.io.IOException; 4 import java.io.OutputStream; 5 import java.net.URLEncoder; 6 import java.util.List; 7 import javax.servlet.http.HttpServletResponse; 8 import org.apache.poi.hssf.usermodel.HSSFCell; 9 import org.apache.poi.hssf.usermodel.HSSFRow; 10 import org.apache.poi.hssf.usermodel.HSSFSheet; 11 import org.apache.poi.hssf.usermodel.HSSFWorkbook; 12 /** 13 * 用来生成xsls或xsl文件的类,生成后可以进行传输下载 14 * 注意:前台请不要使用ajax方式发送下载请求,因为其不支持. 15 * @author Administrator 16 * 17 */ 18 public class XSLXUtil { 19 /** 20 * 21 * @param response 22 * @param titlelist:一个list集合,用来指定表头信息 23 * @param objlist:一个list结合嵌套,内存list就是表头字段对应得一行数据 24 * @param filename:一个文件名,可以自己指定 25 * @throws IOException 26 */ 27 public static void getbook(HttpServletResponse response,List<String> titlelist,List<List<String>> objlist,String filename) throws IOException{ 28 HSSFWorkbook wb = new HSSFWorkbook(); 29 //建立新的sheet对象(excel的表单) 30 HSSFSheet sheet=wb.createSheet(); 31 //这里是指定每列的宽度256=1字符,依次类推 32 for(int x=0;x<ShowString.GDTITLELEN.length;x++){ 33 sheet.setColumnWidth(x,ShowString.GDTITLELEN[x]); 34 } 35 //在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个 36 //HSSFRow row1=sheet.createRow(0); 37 //创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个 38 //HSSFCell cell=row1.createCell(0); 39 //设置单元格内容 40 //cell.setCellValue("学员考试成绩一览表"); 41 //合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列 42 //sheet.addMergedRegion(new CellRangeAddress(0,0,0,3)); 43 //在sheet里创建第二行 44 45 HSSFRow row1=sheet.createRow(0); 46 for(int i=0;i<titlelist.size();i++){ 47 row1.createCell(i).setCellValue(titlelist.get(i)); 48 } 49 for(int j=0;j<objlist.size();j++){ 50 HSSFRow row=sheet.createRow(j+1); 51 List<String> temp = (List<String>) objlist.get(j); 52 for(int k=0;k<temp.size();k++){ 53 HSSFCell cell = row.createCell(k); 54 cell.setCellValue(temp.get(k)); 55 } 56 } 57 //测试阶段,将文件输出到本地进行存储 58 /*OutputStream os = new FileOutputStream("c:\\"+filename); 59 wb.write(os); 60 os.flush(); 61 os.close(); 62 SystemOut.classSystemOut("xslx文件创建成果", "");*/ 63 response.reset(); 64 OutputStream output=response.getOutputStream(); 65 response.setHeader("Content-disposition", "attachment; filename="+ URLEncoder.encode(filename, "UTF-8")); 66 response.setContentType("application/msexcel"); 67 wb.write(output); 68 output.close(); 69 SystemOut.classSystemOut("xslx文件创建成果", ""); 70 } 71 }
1 package com.java.zxf.util; 2 3 import java.io.File; 4 5 public interface ShowString { 6 7 public static String picstorage = "imgs"+File.separator+"upload"; 8 9 public static String picstorage1 = "imgs/upload"; 10 11 public static int defaultEvaluatetime = 7; 12 13 public static int expireinterval = 2; 14 15 public static String GDTYPE = "gd"; 16 17 public static String TJTYPE = "tj"; 18 19 public static int[] GDTITLELEN = {40*256,256*20,256*20,12*256,30*256,12*256,20*256,15*256,15*256,20*256,30*256,50*256,16*256,15*256,20*256,15*256,10*256,15*256,150*256}; 20 21 public static String GDTITLE[] = {"工单编号","机器编号","机器类型","报修人","公司名称","报修手机号","故障归类","工单发起时间","工单结束时间","故障现象","故障描述","报修地址","机器型号","期待服务时间","确认故障","过期时间","是否服务端报修","工单第一提报人","机器其它参数"}; 22 23 public static String TJTITLE[] = {}; 24 25 }