java 导出excel示例

  1 package com.nbm.export.excel;
  2 
  3 import java.io.ByteArrayOutputStream;
  4 
  5 import javax.servlet.ServletOutputStream;
  6 
  7 import org.apache.poi.hssf.usermodel.HSSFCell;
  8 import org.apache.poi.hssf.usermodel.HSSFCellStyle;
  9 import org.apache.poi.hssf.usermodel.HSSFFont;
 10 import org.apache.poi.hssf.usermodel.HSSFRow;
 11 import org.apache.poi.hssf.usermodel.HSSFSheet;
 12 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 13 import org.apache.poi.hssf.util.HSSFCellUtil;
 14 import org.apache.poi.hssf.util.Region;
 15 import org.apache.struts2.ServletActionContext;
 16 
 17 public class ExcelAction {
 18 
 19     public void exportExcel()
 20     {
 21           
 22             // 创建工作薄
 23             HSSFWorkbook wb = new HSSFWorkbook();
 24             
 25             
 26             HSSFCellStyle cellBorder = wb.createCellStyle();
 27             
 28             //设置边框
 29             cellBorder.setBorderLeft(HSSFCellStyle.BORDER_THIN);
 30             cellBorder.setBorderRight(HSSFCellStyle.BORDER_THIN);
 31             cellBorder.setBorderTop(HSSFCellStyle.BORDER_THIN);
 32             cellBorder.setBorderBottom(HSSFCellStyle.BORDER_THIN);
 33             
 34             //居中
 35             cellBorder.setAlignment(HSSFCellStyle.ALIGN_CENTER); 
 36             
 37             cellBorder.setWrapText(true);//自动换行
 38             
 39             HSSFFont font2 = wb.createFont();
 40             font2.setFontName("仿宋_GB2312");//字体
 41             font2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示
 42             font2.setFontHeightInPoints((short) 12);//字号
 43             cellBorder.setFont(font2);//选择需要用到的字体格式
 44 
 45 
 46 
 47             HSSFSheet sheet = wb.createSheet("sheet1");
 48             
 49             //合并单元格
 50             Region region1 = new Region(0, (short) 0, 0, (short) 6);            
 51             sheet.addMergedRegion(region1);
 52 
 53 
 54 
 55             HSSFRow title = sheet.createRow(0);
 56             HSSFCell tcell = title.createCell(0);
 57             tcell.setCellValue("天津市蓟县穿芳峪乡刘向营村");
 58             setRegionStyle(sheet,  region1 , cellBorder);//设置合并单元格的样式
 59             
 60             sheet.setColumnWidth(0, 2500); //第一个参数代表列id(从0开始),第2个参数代表宽度值  参考 :"2012-08-10"的宽度为2500
 61             
 62             HSSFRow row1 = sheet.createRow(1);
 63             HSSFCell cell0 = row1.createCell(0);
 64             cell0.setCellValue("2012-11-22");
 65             
 66             HSSFRow row2 = sheet.createRow(2);
 67             HSSFCell row2cell0 = row2.createCell(0);
 68             row2cell0.setCellValue("测试自动换行,自动换行,自动换行");
 69             row2cell0.setCellStyle(cellBorder);
 70             
 71            
 72             // 输出数据流
 73             try
 74             {
 75                    
 76                     ByteArrayOutputStream baos = new ByteArrayOutputStream();
 77                     wb.write(baos);
 78                     ServletActionContext.getResponse().setContentType(
 79                                     "application/vnd.ms-excel");
 80                     ServletActionContext.getResponse().setContentLength(baos.size());
 81                     ServletOutputStream out = ServletActionContext.getResponse()
 82                                     .getOutputStream();
 83                     baos.writeTo(out);
 84                     out.flush();
 85                    
 86 
 87             } catch (Exception e)
 88             {
 89                    
 90             }
 91     }
 92     /**设置合并后单元格样式
 93      * 
 94      * @param sheet
 95      * @param region
 96      * @param cs
 97      */
 98      private void setRegionStyle(HSSFSheet sheet, Region region , HSSFCellStyle cs) {
 99             int toprowNum = region.getRowFrom();
100             for (int i = region.getRowFrom(); i <= region.getRowTo(); i ++) {
101                 HSSFRow row = HSSFCellUtil.getRow(i, sheet);
102                 for (int j = region.getColumnFrom(); j <= region.getColumnTo(); j++) {
103                     HSSFCell cell = HSSFCellUtil.getCell(row, (short)j);
104                     cell.setCellStyle(cs);
105                 }
106             }
107      }
108 
109 
110     
111 }
原文地址:https://www.cnblogs.com/zhenmingliu/p/2781675.html