Struts2 + poi 动态生成Excel 下载

本文介绍了一个使用Java和Apache POI库动态生成Excel文件的方法。该方法通过从后台获取数据并将其填充到Excel表格中,实现了数据的自动化导出。文章详细展示了如何设置表头和填充数据的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现:

        获取后台数据,动态生成Excel文件

 

实现类:

package com.***.convert;

 

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import com.opensymphony.xwork2.ActionSupport;


import com.test.bean.User;


import com.test.service.UserService;

 

@SuppressWarnings("serial")
public class ToExcel extends ActionSupport {

 

 private UserService service;

 

 public UserService getService() {
  return service;
 }

 

 

 public void setService(UserService service) {
  this.service = service;
 }

 

 

 public InputStream getExcelFile() throws IOException {
  HSSFWorkbook workbook = new HSSFWorkbook();
  HSSFSheet sheet = workbook.createSheet("sheet1");
  {
   // 创建表头
   HSSFRow row = sheet.createRow(0);
   HSSFCell cell = row.createCell((short) 0);
   cell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);
   cell.setCellValue("序号");
   cell = row.createCell((short) 1);
   cell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);
   cell.setCellValue("姓");
   cell = row.createCell((short) 2);
   cell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);
   cell.setCellValue("名");
   cell = row.createCell((short) 3);
   cell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);
   cell.setCellValue("年龄");
   // 创建数据
   SetCellData(sheet,row,cell);
  }
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  workbook.write(baos);
  byte[] ba = baos.toByteArray();
  ByteArrayInputStream bais = new ByteArrayInputStream(ba);
  return bais;
 }

 

 private void SetCellData(HSSFSheet sheet, HSSFRow row, HSSFCell cell) {
  // 创建数据
  List<User> userList = this.service.findAll();
  int i=1;
  for (User user : userList) {
   row = sheet.createRow(i);
   cell = row.createCell((short) 0);
   cell.setCellValue(user.getId());
   cell = row.createCell((short) 1);
   cell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);
   cell.setCellValue(user.getFirstname());
   cell = row.createCell((short) 2);
   cell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);
   cell.setCellValue(user.getLastname());
   cell = row.createCell((short) 3);
   cell.setCellValue(user.getAge());
   i++;
  }
 }

 @Override
 public String execute() throws Exception {
  // TODO Auto-generated method stub
  return SUCCESS;
 }

}

spring配置:

<bean id="downloadAction" class="com.***.convert.ToExcel">
  <property name="service" ref="userService"></property>
 </bean>

 

struts配置:

<action name="downFile" class="downloadAction">
   <result name="success" type="stream">
    <param name="contentType">
     application/vnd.ms-excel
    </param>
    <param name="contentDisposition">
     attachment;filename="AllUsers.xls"
    </param>
    <param name="inputName">excelFile</param>
   </result>
  </action>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值