【学习笔记二】struts2的动态下载,使用Apache PoI生成excel表格,将用户信息以xls文件格式供用户下载

struts2动态下载运用:

实例:

将用户的信息以xls(excel)文件的格式供用户下载。

:需要使用Apache PoI ,需要引进jar包,即poi-2.5.1.jar

1.定义一个InputStream接口,代码如下

2.然后继承实现接口方法,代码如下:

@Override
	public InputStream getInputStream() {

		HSSFWorkbook wb = new HSSFWorkbook();// 用apache poi ,生成HSSFWorkbook对象
		HSSFSheet sheet = wb.createSheet("sheet");// 创建sheet,名字为sheet

		// 创建行,0代表第一行
		HSSFRow row = sheet.createRow(0);

		// 设置第一行的单元格,单元格是short型,必须强转
		HSSFCell cell = row.createCell((short) 0);

			// 设置字符编码
			cell.setEncoding(HSSFCell.ENCODING_UTF_16);
			// 设置第一个单元格内容
			cell.setCellValue("序号");
	
			cell = row.createCell((short) 1);
			cell.setEncoding(HSSFCell.ENCODING_UTF_16);
			cell.setCellValue("姓");
	
			cell = row.createCell((short) 2);
			cell.setEncoding(HSSFCell.ENCODING_UTF_16);
			cell.setCellValue("名");
	
			cell = row.createCell((short) 3);
			cell.setEncoding(HSSFCell.ENCODING_UTF_16);
			cell.setCellValue("年龄");

		// 把数据库中的用户信息展现出来
		List<User> list = this.findAll();

		// 通过for循环,把内容取出,添加在单元格内
		for (int i = 0; i < list.size(); i++) {

			// 得到user对象
			User user = list.get(i);

			// 创建第i+1行
			row = sheet.createRow(i + 1);

			// 穿点i+1行内的单元格
			cell = row.createCell((short) 0);
			cell.setEncoding(HSSFCell.ENCODING_UTF_16);
			cell.setCellValue(user.getId());

			cell = row.createCell((short) 1);
			cell.setEncoding(HSSFCell.ENCODING_UTF_16);
			cell.setCellValue(user.getFirstname());

			cell = row.createCell((short) 2);
			cell.setEncoding(HSSFCell.ENCODING_UTF_16);
			cell.setCellValue(user.getLastname());

			cell = row.createCell((short) 3);
			cell.setEncoding(HSSFCell.ENCODING_UTF_16);
			cell.setCellValue(user.getAge());

		}

		// 创建file对象
		File file = new File("user.xls");

		// 创建输出流OutputStream

		try {
			OutputStream os = new FileOutputStream(file);
			wb.write(os);//写入输出流
			os.close();//关闭资源
		} catch (Exception e) {
			e.printStackTrace();
		}

	   //定义输入流
		InputStream is=null;
		try {
			is=new FileInputStream(file);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		//返回输入流
		return is;
		
	}

//3.配置sturts.xml的信息

如下图

 4.配置spring信息

5.然后创建GenerateExcelAction,代码如下

package com.test.action.user;

import java.io.InputStream;

import com.opensymphony.xwork2.ActionSupport;
import com.test.service.UserService;

public class GenerateExcelAction extends ActionSupport {

	private static final long serialVersionUID = 1L;
	private UserService userService;

	public UserService getUserService() {
		return userService;
	}

	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	
	 public InputStream getDownloadFile(){
            //DownladFile必须和strutsw.中的配置的param中的值一致  
           return this.userService.getInputStream();
	 }
	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		return SUCCESS;
	}
}

//6.运行结果,如下图


7.总结: 只要用心学,用心理解,没有做不到的,加油,继续培养兴趣!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值