标签:
封装类:
package com.xshcar.carcloud.util; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.HSSFColor; public class ExcelUtil { /* * 列头单元格样式 */ public HSSFCellStyle getColumnTopStyle(HSSFWorkbook workbook) { // 设置字体 HSSFFont font = workbook.createFont(); //设置字体大小 font.setFontHeightInPoints((short)11); //字体加粗 font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //设置字体名字 font.setFontName("Courier New"); //设置样式; HSSFCellStyle style = workbook.createCellStyle(); //设置底边框; style.setBorderBottom(HSSFCellStyle.BORDER_THIN); //设置底边框颜色; style.setBottomBorderColor(HSSFColor.BLACK.index); //设置左边框; style.setBorderLeft(HSSFCellStyle.BORDER_THIN); //设置左边框颜色; style.setLeftBorderColor(HSSFColor.BLACK.index); //设置右边框; style.setBorderRight(HSSFCellStyle.BORDER_THIN); //设置右边框颜色; style.setRightBorderColor(HSSFColor.BLACK.index); //设置顶边框; style.setBorderTop(HSSFCellStyle.BORDER_THIN); //设置顶边框颜色; style.setTopBorderColor(HSSFColor.BLACK.index); //在样式用应用设置的字体; style.setFont(font); //设置自动换行; style.setWrapText(false); //设置水平对齐的样式为居中对齐; style.setAlignment(HSSFCellStyle.ALIGN_CENTER); //设置垂直对齐的样式为居中对齐; style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); return style; } /* * 列数据信息单元格样式 */ public HSSFCellStyle getStyle(HSSFWorkbook workbook) { // 设置字体 HSSFFont font = workbook.createFont(); //设置字体大小 //font.setFontHeightInPoints((short)10); //字体加粗 //font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //设置字体名字 font.setFontName("Courier New"); //设置样式; HSSFCellStyle style = workbook.createCellStyle(); //设置底边框; style.setBorderBottom(HSSFCellStyle.BORDER_THIN); //设置底边框颜色; style.setBottomBorderColor(HSSFColor.BLACK.index); //设置左边框; style.setBorderLeft(HSSFCellStyle.BORDER_THIN); //设置左边框颜色; style.setLeftBorderColor(HSSFColor.BLACK.index); //设置右边框; style.setBorderRight(HSSFCellStyle.BORDER_THIN); //设置右边框颜色; style.setRightBorderColor(HSSFColor.BLACK.index); //设置顶边框; style.setBorderTop(HSSFCellStyle.BORDER_THIN); //设置顶边框颜色; style.setTopBorderColor(HSSFColor.BLACK.index); //在样式用应用设置的字体; style.setFont(font); //设置自动换行; style.setWrapText(false); //设置水平对齐的样式为居中对齐; style.setAlignment(HSSFCellStyle.ALIGN_CENTER); //设置垂直对齐的样式为居中对齐; style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); return style; } public String formatString(Object obj) { if(obj==null){ return ""; } if(obj instanceof Date){ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); return dateFormat.format(obj); } return obj.toString(); } public Double formatDouble(Object obj){ return Double.parseDouble(obj.toString()); } public String ObjtoString(Object obj){ if(obj==null){ return ""; }else{ return obj.toString(); } } }
action:
//IMI数据导出 public void ShopUboxExport(){ try { String path = ServletActionContext.getServletContext().getRealPath("")+"/savepath/dataExport.xls"; pagenum=1; Integer isuser=null; CarshopTbl s=(CarshopTbl) session.get("carshop"); Integer sid=s.getSId(); Integer count=uboxTblService.get4sdeviceUboxCount(isuser,primaryName,sid); List shopUboxList=uboxTblService.get4sdeviceUbox(sid,isuser,primaryName, pagenum , count); ExcelUtil excelUtil =new ExcelUtil(); HSSFWorkbook workbook = new HSSFWorkbook(); // 创建工作簿对象 FileOutputStream fos = new FileOutputStream(path); // 创建.xls文件 HSSFSheet sheet = workbook.createSheet(); // 创建工作表 sheet.setDefaultColumnWidth ((short)30); // 设置工作表列宽 sheet.setDefaultRowHeight((short)10); // 设置工作表行高 /* * sheet样式定义【getColumnTopStyle()/getStyle()均为自定义方法 - 在下面 - 可扩展】 * */ HSSFCellStyle columnTopStyle = excelUtil.getColumnTopStyle(workbook);//获取列头样式对象 HSSFCellStyle style = excelUtil.getStyle(workbook); //单元格样式对象 //列头数组定义 String[] label = {"设备IMIE码","分配时间","使用状态","设备配件","车主姓名","车牌号"}; //设置列头 HSSFRow row1 = sheet.createRow((short)0); // 在索引0的位置创建行(最顶端的行) HSSFCell cell1 = null; // 在索引0的位置创建单元格(左上端) // 定义所需列数 int columnNum =5; // 将列头设置到sheet的单元格中 for(int n=0;n<columnNum;n++){ cell1 = row1.createCell((short)(n)); //创建列头对应个数的单元格 cell1.setCellType(HSSFCell.CELL_TYPE_STRING); //设置列头单元格的数据类型 cell1.setCellValue(label[n]); //设置列头单元格的值 cell1.setCellStyle(columnTopStyle); //设置列头单元格样式 } for(int i=0;i<shopUboxList.size();i++){ Object [] objs = (Object[])shopUboxList.get(i); String imieCode= excelUtil.ObjtoString(objs[0]); String createTime=excelUtil.formatString(objs[1]); String status=excelUtil.ObjtoString(objs[2]); String peijian=excelUtil.ObjtoString(objs[3]); String ciname=excelUtil.ObjtoString(objs[4]); String cplate=excelUtil.ObjtoString(objs[5]); //将属性转化成字符串数组的格式以便于写到sheet中 String c[] = {imieCode,createTime,status,peijian,ciname,cplate}; //创建行(从下面的i+1要注意,第0行是列头,因此创建新行要从下一行开始) HSSFRow row = sheet.createRow(i+1); //创建所需的行数 for(short j=0;j<columnNum;j++){ HSSFCell cell = row.createCell(j,HSSFCell.CELL_TYPE_STRING);//设置单元格的数据类型 cell.setCellValue(c[j]); //设置单元格的值 cell.setCellStyle(style); //设置单元格样式 } } workbook.write(fos);// 将workbook对象输出到文件test.xls fos.flush(); // 缓冲 fos.close(); // 关闭流(养成好的习惯打开了就别忘记关闭) if(workbook !=null){ // 获取当前时间用作文件名 String filename = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); // 这里使用的是 response 的输出流,如果将该输出流换为普通的文件输出流则可以将生成的文档写入磁盘等 // 这个是弹出下载对话框的关键代码 response.setContentType("application/vnd.ms-excel;charset=utf-8"); response.setHeader("Content-Disposition","attachment;filename="+filename); response.setCharacterEncoding("utf-8"); } PrintWriter out= response.getWriter(); out = response.getWriter(); out.print(1); }catch(Exception e){ e.printStackTrace(); } }
标签:
原文地址:http://www.cnblogs.com/ZC987053660/p/5666675.html