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时,首先需要创建一个`XSSFWorkbook`对象作为工作簿,然后通过工作簿创建`XSSFSheet`对象代表工作表。例如: ```java XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet =...
本文将深入探讨如何使用ITEXT库导出PDF和Word,以及利用Apache POI库导出Excel报表文件。 首先,让我们来了解ITEXT库。ITEXT是一个开源Java库,专门用于创建和修改PDF文档。使用ITEXT,你可以方便地生成包含文本、...
这篇博客文章“Apache POI 导出excel实例”将深入探讨如何使用Apache POI库来生成Excel文件,这对于在Java环境中处理大量数据并需要导出为Excel格式的应用非常有用。 首先,我们需要导入Apache POI库到我们的项目中...
这篇博客“Apache Poi Excel导出”可能详细介绍了如何使用Apache POI库来生成Excel文件,特别适用于数据导出或报表生成等场景。 Apache POI API 包含多个关键组件,如HSSF(Horizontally Stored Format)用于处理旧...
2. **导出Excel**: 使用Apache POI创建Excel文件时,首先需要创建一个Workbook对象,它是Excel文件的容器。然后,可以添加Sheet对象来表示工作表,并在Sheet中创建Row和Cell来填充数据。POI支持多种单元格数据类型...
以下是一个简化的示例,演示了如何使用POI导出Excel: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io....
使用Apache POI导出Excel的步骤大致如下: 1. **引入依赖**:首先,你需要将下载的Apache POI JAR文件添加到你的项目类路径中,如果是Maven或Gradle项目,可以添加相应的依赖配置。 2. **创建工作簿对象**:使用...
在本案例中,我们关注的是如何使用 Apache POI 库来导出 Excel 文件,特别是根据模板导出和简单列表导出。下面将详细介绍这个过程。 1. **Apache POI 概述** Apache POI 提供了 Java API 来读写 Microsoft Office ...
在这个特定的例子中,我们将讨论如何使用POI库基于一个Excel模板文件循环输出数据行,并将结果导出为新的Excel文件。 首先,我们需要理解POI库的基本概念。POI提供了HSSF(Horizontally SpreadSheet Format)和XSSF...
在"Apache POI 模板导出excel.rar"这个压缩包中,我们聚焦于使用Apache POI 3.16版本来生成基于Excel模板的数据导出功能。这个过程涉及到多个关键知识点,下面将详细阐述。 1. **Apache POI库**:Apache POI是一个...
在这个“POI导出Excel表格”的实例中,我们将深入探讨如何利用Apache POI进行Excel文件的导入与导出操作。 首先,我们需要在项目中集成Apache POI库。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```...
通过以上步骤,我们成功地实现了使用Apache POI在Java中导出Excel文件,并实现了自动换行的功能。这种方式不仅可以提高工作效率,还能确保数据的准确性和完整性。 #### 六、注意事项与优化建议 - **兼容性问题**:...
【作品名称】:基于Apache POI导出大数据量(百万级)Excel的实现 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:...
以下是一个简单的使用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"指的是在使用Apache POI进行Excel导出时,你需要包含特定的JAR依赖文件。 首先,要实现POI导出Excel的功能,你需要下载Apache POI相关的JAR文件。这些文件通常包括以下核心组件: 1. **poi...
本教程将详细讲解如何使用Apache POI在Web环境中导出Excel表格,避免生成不必要的临时文件,从而优化系统资源管理。 一、Apache POI简介 Apache POI 是一个开源项目,它提供了Java API来处理Microsoft的Office格式...
七、导出Excel文件 最后,将Workbook写入OutputStream或File,完成导出: ```java try (FileOutputStream out = new FileOutputStream("output.xlsx")) { workbook.write(out); } catch (IOException e) { e....
以上就是使用Java和Apache POI导出Excel的基本步骤。实际应用中,你可能还需要处理更复杂的情况,如合并单元格、添加公式、读取数据等。POI库提供了丰富的API来支持这些功能,使得在Java中操作Excel文件变得相当便捷...
标题“使用poi导出excel”涉及的是Apache POI库在Java中的应用,这是一个广泛使用的库,用于读取、写入Microsoft Office格式的文件,特别是Excel(.xlsx和.xls)文件。Apache POI提供了API,使得开发者能够方便地...