`

生成Excel报告供下载(Struts2)

    博客分类:
  • JAVA
阅读更多

1,Struts2配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
	<package name="base" extends="struts-default" namespace="/">
		<action name="download" class="ivan.test.action.OutputExcelAction">
			<!-- EXCEL 模板所在位置 -->
			<param name="templatePosition">/template.xls</param>
			<result type="stream" name="success">
				<!-- 下载文件的类型,假如下载的是其他的,但你又不知道是什么格式,可以去 tomcat\conf\web.xml下找 -->
				<param name="contentType">application/vnd.ms-excel</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>
	</package>
</struts>

2,Action类

package ivan.test.action;

import ivan.test.demo.ExcelUtil;

import java.io.InputStream;
import java.util.Map;

public class OutputExcelAction extends BaseAction {

	private static final long serialVersionUID = 1L;
	// output 输出流变量
	private InputStream excelStream;
	// output 下载文件名
	private String excelFileName;
	// injection 模板路径
	private String templatePosition;

	@Override
	public String execute() throws Exception {
		String templatePath = httpApplication.getRealPath("/")
				+ "WEB-INF/classes" + templatePosition;

		Map<String, Object> map = ExcelUtil.getExcelMap(templatePath);
		excelStream = (InputStream) map.get("excelStream");
		excelFileName = (String) map.get("excelFileName");
		return SUCCESS;
	}

	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;
	}

	public String getTemplatePosition() {
		return templatePosition;
	}

	public void setTemplatePosition(String templatePosition) {
		this.templatePosition = templatePosition;
	}

}

3,生成Excel的输入流与Excel的名字

package ivan.test.demo;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

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;

public class ExcelUtil {

	public static Map<String, Object> getExcelMap(String template)
			throws Exception {
		ByteArrayOutputStream os = null;
		try {
			// 读取模板
			HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(
					template));

			// 按照业务逻辑写入Excel表
			HSSFSheet sheet = workbook.getSheet("firstSheet");
			for (int i = 1; i < 10; i++) {
				HSSFRow row = sheet.createRow(i);
				for (int j = 0; j < 10; j++) {
					HSSFCell cell = row.createCell(j);
					cell.setCellType(HSSFCell.CELL_TYPE_STRING);
					cell.setCellValue("(" + i + " , " + j + ")");
				}
			}

			// 获取Excel名字与Excel的InputStream流
			os = new ByteArrayOutputStream();
			workbook.write(os);
			InputStream excelStream = new ByteArrayInputStream(os.toByteArray());
			String excelFileName = "text.xls";

			// 加载到Map,并返回Map
			Map<String, Object> excelMap = new HashMap<String, Object>();
			excelMap.put("excelFileName", excelFileName);
			excelMap.put("excelStream", excelStream);
			return excelMap;
		} catch (Exception e) {
			System.out.println("异常.............");
			throw e;
		} finally {
			if (os != null) {
				os.close();
			}
		}
	}
}

 

分享到:
评论

相关推荐

    struts2内存中生成excel并下载

    struts2内存中生成excel并下实例

    Struts实时生成Excel文件下载

    Struts实时生成Excel文件下载

    Struts2中POI在内存中生成Excel文件并下载

    下面将详细介绍如何在Struts2中利用POI在内存中生成Excel文件并提供下载。 首先,了解Apache POI的基本用法。POI提供了HSSFWorkbook类,用于处理Excel的XLS格式,而XSSFWorkbook则处理XLSX格式。这里我们主要讨论...

    struts2 支持的下载以及如何动态生成excel表格文件

    总的来说,Struts2提供了便捷的方式来处理文件下载,而Apache POI使我们能够在Java中动态生成Excel文件,这两者结合为Web应用提供了强大的文件操作能力。在实际开发中,你需要根据具体的需求进行适当的调整和优化,...

    [转]java struts2+jxl生成并导出Excel

    这篇博客文章结合了这两个技术,展示了如何在Struts2应用中生成Excel文件并将其导出给用户下载。 在Java开发中,导出数据到Excel是常见的需求,特别是在处理大量结构化数据时,如报表或数据分析。JXL库提供了一个...

    struts2生成Excel文件上传下载

    项目:Struts2UpAndDownLoadFile 1.实现文件的上传和下载 项目:Struts2HandleExcelFile 1.实现文件的上传和下载 2.利用apache的poi-3.5-FINAL-20090928.jar组件实现创建Excel表格。

    Struts2文件流方式导出下载excel、Txt、image图片

    通过上述步骤,我们就可以在Struts2框架下实现文件流方式的下载功能,无论是Excel、TXT还是图片,都能有效地直接返回给浏览器,让客户端进行下载。这种方式既节省了服务器资源,也提高了用户体验。在实际项目中,...

    java代码生成excel表并下载

    本主题聚焦于“java代码生成excel表并下载”,这是一个关键的后端功能,允许用户自定义表格内容并选择下载路径。下面我们将深入探讨如何实现这一功能。 首先,Java中用于生成Excel文件的主要库是Apache POI项目。...

    struts2 excel下载DEMO和jquery生成二维码DEMO

    首先,关于Struts2生成Excel下载的功能。在企业应用中,常常需要将数据库中的数据导出为Excel格式,方便用户进行数据分析或保存。在Struts2中,我们可以使用Apache POI库来创建和操作Excel文件。Apache POI是Java ...

    struts2 poi导出到excel

    这样,当用户访问特定的URL时,服务器就会触发`ExportExcelAction`的`execute`方法,生成Excel文件并发送给客户端下载。 总结一下,Struts2结合Apache POI实现数据导出到Excel的关键步骤包括: 1. 引入Apache POI的...

    struts2实现excel导出

    在Struts2框架中,实现Excel导出的功能主要依赖于Apache POI库,这是一个用于读写Microsoft Office格式档案的Java库。以下将详细介绍如何利用Struts2和POI实现Excel导出。 首先,你需要在项目中引入Apache POI库。...

    struts2整合apache的jxl导入导出excel表格

    此方法接受一个包含多种数据类型的列表,并返回一个 `InputStream`,该流可以被 Struts2 动作类用来生成并下载 Excel 文件。 3. **服务层接口实现**: 创建 `ExcelServiceImpl` 类来实现 `IExcelService` 接口。在...

    struts2处理Excel生成txt文件

    在Struts2框架中,可以使用`Action`类的`StreamingResult`结果类型来实现。 ```java public StreamingResult generateDownload() { StreamingResult result = new StreamingResult(); result.setFileName(...

    struts2中利用poi导出excel

    最后,通过Struts2的拦截器机制,当用户请求这个Action时,将会触发`exportExcel`方法,生成Excel文件并自动触发下载。 总结起来,利用Struts2和Apache POI,我们可以方便地实现从Web应用中导出数据到Excel的功能。...

    Struts2+Excel导出Demo,测试可用带JAR包

    这个"Struts2+Excel导出Demo"是一个实用的教学案例,可以帮助开发者理解如何在Java Web应用中集成Struts2和Excel导出功能。通过学习和实践这个Demo,开发者可以快速掌握相关技术,提高工作效率。

    Struts2文件动态上传和动态下载(可自动生成下载内容)

    - **动态生成下载内容**:不同于传统的文件下载,这里的“动态生成”意味着文件内容可能不是预先存在的,而是根据某些条件在服务器端即时生成的,比如从数据库中提取数据,组合成Excel或CSV格式供用户下载。...

    Spring + struts2 + hibernate excel生成

    - **结果类型**:Struts2的结果类型可以配置为生成Excel文件,然后返回给客户端下载。 3. **Hibernate框架的角色**: - **数据持久化**:Hibernate简化了数据库操作,允许开发者通过对象模型与数据库交互。在生成...

    整合struts2 ssh导出excel

    2. **Struts2 Action配置**:创建一个Action类,该类将处理导出请求,并生成Excel文件。在struts.xml中定义相应的Action配置,例如: ```xml &lt;param name="contentType"&gt;application/vnd.ms-excel ...

    JSP Struts2 分页 导出Excel

    在Struts2 Action中,我们可以创建一个Excel工作簿,添加工作表,填充数据,然后设置响应头,使其以二进制流的方式下载到用户的本地计算机。 6. **数据库操作** 数据库文件存储在`webroot/db`目录下,这可能意味着...

    Struts2 poi动态导入导出Excel源码示例

    5. **生成Excel**: 对于导出功能,你可以先从数据库中查询需要的数据,然后使用POI创建一个新的Workbook对象,创建Sheet,填充数据到Row和Cell中。最后,使用Struts2的`StreamingActionResult`或者自定义的Result...

Global site tag (gtag.js) - Google Analytics