`

用Apache POI导出Excel

    博客分类:
  • OA
阅读更多

Service中的代码如下:

public InputStream getInputStream() {
		HSSFWorkbook wk = new HSSFWorkbook();
		HSSFSheet sheet = wk.createSheet("UserList");
		HSSFRow row = sheet.createRow(0);
		
		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> userList = this.getUserList();
		
		for(int i=0;i<userList.size();++i){
			User user = userList.get(i);
			row = sheet.createRow(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());
		}
		//此处对文件进行了命名,但是下载时的文件默认名字实际上是struts.xml中配置的名字,
		//此文件是在tomcat服务器中bin目录中的临时文件的名字
		File file = new File("test.xls");
		try {
			OutputStream os = new FileOutputStream(file);
			wk.write(os);
			os.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		InputStream is=null;
		try {
			is = new FileInputStream(file);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		return is;
	}

 
action中所要使用到的方法如下:

        public InputStream getDownloadFile(){
		return this.userService.getInputStream();
	}
	
	public String generateExcel(){
		return SUCCESS;
	}

 其中的实例的action只返回了一个success


struts.xml应做如下配置:

<action name="generateExcel" class="userAction" method="generateExcel">
			<!-- 指定type为stream类型 -->



			<result name="success" type="stream">
				<!-- 指定输出的为Excel文件 -->



				<param name="contentType">application/vnd.ms-excel</param>
				<!-- 指定下载时文件的默认名字,注貌似不能使用中文,同时filename不能写成fileName -->
				<param name="contentDisposition">filename="AllUser.xls"</param>
                                <!-- 此处的值是对应于action中的某个返回值为InputStream的方法,如为下面的配置,
					那么 userAction中需要有一个public InputStream getDownloadFile()的方法 -->				
                                 <param name="inputName">downloadFile</param>
			</result>
</action>

 
type应为stream,所有param元素中的name属性的值大小写要区别,如inputName不能写成inputname,

 

 

这里的程序还有一个问题,也就是那个临时文件的问题,即当某一个用户点击生成Excel链接后,执行生成"text.xls"后,正准备往外面输出文件,就在这时,另一用户又点击了同一个链接,这就导致了一个严重的问题,也就是当某一用户正要往外输出流的时候,另一个用户正准备创建这个流或者正要写这个流!解决这个问题有两个方法,见下一篇博文。

 

分享到:
评论

相关推荐

    apache POI 导出Excel 设置打印

    在使用Apache POI导出Excel时,首先需要创建一个`XSSFWorkbook`对象作为工作簿,然后通过工作簿创建`XSSFSheet`对象代表工作表。例如: ```java XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet =...

    使用ITEXT导出PDF、WORD,APACHE POI导出EXCEL报表文件

    本文将深入探讨如何使用ITEXT库导出PDF和Word,以及利用Apache POI库导出Excel报表文件。 首先,让我们来了解ITEXT库。ITEXT是一个开源Java库,专门用于创建和修改PDF文档。使用ITEXT,你可以方便地生成包含文本、...

    Apache poi 导出excel实例

    这篇博客文章“Apache POI 导出excel实例”将深入探讨如何使用Apache POI库来生成Excel文件,这对于在Java环境中处理大量数据并需要导出为Excel格式的应用非常有用。 首先,我们需要导入Apache POI库到我们的项目中...

    Apache Poi Excel导出

    这篇博客“Apache Poi Excel导出”可能详细介绍了如何使用Apache POI库来生成Excel文件,特别适用于数据导出或报表生成等场景。 Apache POI API 包含多个关键组件,如HSSF(Horizontally Stored Format)用于处理旧...

    apache poi 导出excel、word

    2. **导出Excel**: 使用Apache POI创建Excel文件时,首先需要创建一个Workbook对象,它是Excel文件的容器。然后,可以添加Sheet对象来表示工作表,并在Sheet中创建Row和Cell来填充数据。POI支持多种单元格数据类型...

    POI导出Excel文件

    以下是一个简化的示例,演示了如何使用POI导出Excel: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io....

    poi导出excel需要包

    使用Apache POI导出Excel的步骤大致如下: 1. **引入依赖**:首先,你需要将下载的Apache POI JAR文件添加到你的项目类路径中,如果是Maven或Gradle项目,可以添加相应的依赖配置。 2. **创建工作簿对象**:使用...

    poi导出根据模板导出excel和简单列表导出excel源码

    在本案例中,我们关注的是如何使用 Apache POI 库来导出 Excel 文件,特别是根据模板导出和简单列表导出。下面将详细介绍这个过程。 1. **Apache POI 概述** Apache POI 提供了 Java API 来读写 Microsoft Office ...

    POI使用Excel模板文件循环输出行并导出Excel

    在这个特定的例子中,我们将讨论如何使用POI库基于一个Excel模板文件循环输出数据行,并将结果导出为新的Excel文件。 首先,我们需要理解POI库的基本概念。POI提供了HSSF(Horizontally SpreadSheet Format)和XSSF...

    Apache POI 模板导出excel.rar

    在"Apache POI 模板导出excel.rar"这个压缩包中,我们聚焦于使用Apache POI 3.16版本来生成基于Excel模板的数据导出功能。这个过程涉及到多个关键知识点,下面将详细阐述。 1. **Apache POI库**:Apache POI是一个...

    POI导出Excel表格

    在这个“POI导出Excel表格”的实例中,我们将深入探讨如何利用Apache POI进行Excel文件的导入与导出操作。 首先,我们需要在项目中集成Apache POI库。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```...

    POI的EXCEL导出,自动换行

    通过以上步骤,我们成功地实现了使用Apache POI在Java中导出Excel文件,并实现了自动换行的功能。这种方式不仅可以提高工作效率,还能确保数据的准确性和完整性。 #### 六、注意事项与优化建议 - **兼容性问题**:...

    基于Apache POI导出大数据量(百万级)Excel的实现

    【作品名称】:基于Apache POI导出大数据量(百万级)Excel的实现 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:...

    poi方式导出excel需要的3个jar包

    以下是一个简单的使用Apache POI导出Excel的工作流程示例: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java....

    poi导出excel需要的jar

    "poi导出excel需要的jar"指的是在使用Apache POI进行Excel导出时,你需要包含特定的JAR依赖文件。 首先,要实现POI导出Excel的功能,你需要下载Apache POI相关的JAR文件。这些文件通常包括以下核心组件: 1. **poi...

    poi导出excel表格

    本教程将详细讲解如何使用Apache POI在Web环境中导出Excel表格,避免生成不必要的临时文件,从而优化系统资源管理。 一、Apache POI简介 Apache POI 是一个开源项目,它提供了Java API来处理Microsoft的Office格式...

    使用poi方式导出excel(分多个sheet导出)

    七、导出Excel文件 最后,将Workbook写入OutputStream或File,完成导出: ```java try (FileOutputStream out = new FileOutputStream("output.xlsx")) { workbook.write(out); } catch (IOException e) { e....

    Java实现POI导出Excel

    以上就是使用Java和Apache POI导出Excel的基本步骤。实际应用中,你可能还需要处理更复杂的情况,如合并单元格、添加公式、读取数据等。POI库提供了丰富的API来支持这些功能,使得在Java中操作Excel文件变得相当便捷...

    使用poi导出excel

    标题“使用poi导出excel”涉及的是Apache POI库在Java中的应用,这是一个广泛使用的库,用于读取、写入Microsoft Office格式的文件,特别是Excel(.xlsx和.xls)文件。Apache POI提供了API,使得开发者能够方便地...

Global site tag (gtag.js) - Google Analytics