java --struts2数据库导出Excel文件,下载提示

来源:互联网 发布:昆明网络主播招聘 编辑:程序博客网 时间:2024/05/21 11:28
<pre name="code" class="plain">poi-3.11-20141221.jar

package cn.lanz.employe.excel.action;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.text.SimpleDateFormat;import java.util.List;import org.apache.catalina.core.ApplicationContext;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermodel.HSSFDataFormat;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.ss.usermodel.IndexedColors;import org.apache.struts2.ServletActionContext;import cn.lanz.employe.employee.service.EmployeeService;import cn.lanz.employe.employee.vo.Employee;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;/** * @描述: 导出Excel文件 * @version 创建时间: 2016-10-7:上午10:53:21 * @E-mail 邮箱: lan***@126.com * @author 作者: 蓝** */public class ExportExcelAction extends ActionSupport implements ModelDriven<Employee>{private static final long serialVersionUID = 1L;/** * 加入模型驱动 */private Employee employee=new Employee();@Overridepublic Employee getModel() {// TODO Auto-generated method stubreturn null;}/** * 注入员工service */private EmployeeService employeeService;public void setEmployeeService(EmployeeService employeeService) {this.employeeService = employeeService;}public String exportExcel()throws Exception{//第一步,创建一个workbook,对应一个excel文件HSSFWorkbook wb=new HSSFWorkbook();HSSFSheet sheet =wb.createSheet("员工信息表");HSSFDataFormat format=wb.createDataFormat();//单元格内容格式sheet.setColumnWidth(0, 20*256);//设置单元格列宽度sheet.setColumnWidth(1, 20*256);//设置单元格列宽度sheet.setColumnWidth(2, 20*256);//设置单元格列宽度sheet.setColumnWidth(3, 20*256);//设置单元格列宽度sheet.setColumnWidth(4, 20*256);//设置单元格列宽度sheet.setColumnWidth(5, 20*256);//设置单元格列宽度Short height=300;sheet.setDefaultRowHeight(height);//统一高度 HSSFRow row=sheet.createRow(0);HSSFCellStyle style=wb.createCellStyle();//设置样式style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中style.setFillBackgroundColor(IndexedColors.DARK_YELLOW.getIndex());HSSFCell cell;cell=row.createCell(0);cell.setCellValue("员工编号");cell.setCellStyle(style);cell=row.createCell(1);cell.setCellValue("员工姓名");cell.setCellStyle(style);cell=row.createCell(2);cell.setCellValue("员工性别");cell.setCellStyle(style);cell=row.createCell(3);cell.setCellValue("员工出生日期");cell.setCellStyle(style);cell=row.createCell(4);cell.setCellValue("员工入职日期");cell.setCellStyle(style);cell=row.createCell(5);cell.setCellValue("员工所属部门");cell.setCellStyle(style);//从数据库中读取数据 List<Employee> list=employeeService.listAll();//转换日期格式SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");//循环输出for(int i=0;i<list.size();i++){row=sheet.createRow(i+1);employee=list.get(i);row.createCell(0).setCellValue(employee.getEno());row.createCell(1).setCellValue(employee.getEname());row.createCell(2).setCellValue(employee.getSex());row.createCell(3).setCellValue(fmt.format(employee.getBirthday()));row.createCell(4).setCellValue(fmt.format(employee.getJoinDate()));row.createCell(5).setCellValue(employee.getDepartment().getDname());} //第七步,将文件存到流中 ByteArrayOutputStream os = new ByteArrayOutputStream(); wb.write(os); byte[] fileContent = os.toByteArray(); ByteArrayInputStream is = new ByteArrayInputStream(fileContent); excelStream = is; //文件流 excelFileName = "employee.xls"; //设置下载的文件名 return SUCCESS;} private InputStream excelStream; //输出流变量 private String excelFileName; //下载文件名 public InputStream getExcelStream() { return excelStream; } public void setExcelStream(InputStream excelStream) { this.excelStream = excelStream; } public String getExcelFileName() { return excelFileName; } public void setExcelFileName(String excelFileName) { this.excelFileName = excelFileName; } }



===================

struts.xml配置

<action name="excel_*" class="cn.lanz.employe.excel.action.ExportExcelAction" method="{1}">              <result name="success" type="stream">                  <!-- 下载文件的类型,如果你不知道是什么格式,可以去 tomcat\conf\web.xml下找 -->                  <param name="contentType">application/vnd.ms-excel;charset=UTF-8</param>                  <!-- 返回流 excelStream为action中的流变量名称 -->                  <param name="inputName">excelStream</param>                  <!-- attachment 这个位置的参数挺特殊的,可以设置成下载时,是否出现个下载提示框,或者直接下载之类的。                  fileName指定生成的文件名字(适合动态生成文件名,比如做报表时,一般都要说是几月的统计数据之类)为action中变量-->                  <param name="contentDisposition">                      attachment;filename=${excelFileName}                  </param>                  <param name="bufferSize">1024</param>              </result>           </action>



0 0
原创粉丝点击