使POI进行Excel数据的导出

1 篇文章 0 订阅

	最近做项目需要做Excel表格的导出,最后选择了POI进行文件的导出

  1. public class ExcelAction {
    	// 这个输入流对应上面struts.xml中配置的那个excelStream,两者必须一致  
        private InputStream excelStream;  
        private String fileName; //文件名  
        private File excelFile;
        private List<Salary> salary;
    	public String  test(){
    		//创建work对象
    				HSSFWorkbook work = new HSSFWorkbook();
    				//创建sheet对象
    				HSSFSheet sheet = work.createSheet("工资条");
    				//在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
    				HSSFRow row1=sheet.createRow(0);
    				//创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
    				HSSFCell cell=row1.createCell(0);
    				//设置单元格内容
    				cell.setCellValue("员工工资条");
    				//合并单元格(CellRangeAddress 参数依次为起始行,结束行,其实列,截止列)
    				sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 3));
    				HSSFRow row2=sheet.createRow(1);    
    			      //创建单元格并设置单元格内容
    			      row2.createCell(0).setCellValue("姓名");
    			      row2.createCell(1).setCellValue("工号");    
    			      row2.createCell(2).setCellValue("本月工资");
    			      row2.createCell(3).setCellValue("纳税");    
    			      //在sheet里创建第三行
    			      HSSFRow row3=sheet.createRow(2);
    			      row3.createCell(0).setCellValue("李明");
    			      row3.createCell(1).setCellValue("As178");
    			      row3.createCell(2).setCellValue(3000.00);    
    			      row3.createCell(3).setCellValue(20.00);
    			      //在sheet里创建第四行
    			      HSSFRow row4=sheet.createRow(3);
    			      row4.createCell(0).setCellValue("张三");
    			      row4.createCell(1).setCellValue("As177");
    			      row4.createCell(2).setCellValue(5000.00);    
    			      row4.createCell(3).setCellValue(30.00); 
    			      //输出Excel表格
    			      try {
    			    	 this.fileName = new String("工资条".getBytes(),"iso-8859-1"); // 设置文件名  
    			    	 ByteArrayOutputStream baos = new ByteArrayOutputStream();  
    			    	 work.write(baos);  
    			         baos.flush();  
    			         byte[] aa = baos.toByteArray();  
    			         excelStream = new ByteArrayInputStream(aa, 0, aa.length);  
    			         baos.close();  
    					System.out.println("导出成功");
    			      } catch (FileNotFoundException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				} catch (IOException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    		return "success";
    	} 
  2. 在strus.xml中进行以下配置  
  3. <result name="success" type="stream">	
  4. <paramname="contentType">application/vnd.ms-excel;charset=UTF-8"</param>  
  5. <param name="inputName">excelStream</param>
  6. <param name="contentDisposition">attachment;filename="${fileName}.xls"</param>   <!--这里的fileName必须与action中的成员变量名一致 -->  
  7. <param name="bufferSize">1024</param> 
</result>

在配置文件中加入进行响应头文件名的配置就可以在导出时选择路径

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值