您的位置:首页 > 编程语言 > Java开发

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

2016-10-08 00:01 627 查看
<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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: