专业的JAVA编程教程与资源

网站首页 > java教程 正文

java导出excel及下载的实现(java导出excel能导出图片吗)

temp10 2024-09-21 03:56:39 java教程 8 ℃ 0 评论

在实际的项目中,使用java实现excel的读取和导出数据是很常见的技术。本文简单实现java导出excel并下载的功能。其中,java导出excel使用的是Apache poi技术,使用之前需要在项目中引入相关的jar包。poi相关技术之前有过探讨,在此不再赘述。

关于下载的功能实现,一种是通过超链接指向文件路径的方式实现下载,使用这种方式常见于文件上传之后的下载实现。当然,本例使用上述方式也能实现,分为2步:第一步是将文件导出到服务器相关目录,详见之前poi文章中的相关实现,相当于缓存文件;第二步,是使用超链接指向文件的路径。上述实现较为简单,本文不再赘述,本文讨论的是使用servlet实现excel文件的导出下载功能。

java导出excel及下载的实现(java导出excel能导出图片吗)

具体思路:

1.response通过设置Header和ContentType可以实现Excel文件的下载,具体设置如下:

// 设置response的Header

response.addHeader("Content-Disposition", "attachment;filename="

+ new String(filename.getBytes(),"iso8859-1")+".xls");

response.setContentType("application/vnd.ms-excel;charset=utf-8");

2. 使用poi可以将需要导出的数据写入OutputStream,而OutputStream可以由esponse.getOutputStream()提供,相关代码如下:

//excel写入输出流

wb.write(response.getOutputStream());

3.java实现excel的导出和下载的源代码如下:

package com.company.servlet;

import java.io.*;

import java.util.*;

import javax.servlet.ServletException;

import javax.servlet.http.*;

import org.apache.poi.hssf.usermodel.*;

import org.apache.poi.ss.util.CellRangeAddress;

/**

* Excel导出并下载

* <p>Title:DownloadServlet </p>

* <p>Description:TODO </p>

* <p>Company: </p>

* @author code legend

* @date 2016-10-31 下午9:10:17

*/

public class DownloadServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//创建工作簿

HSSFWorkbook wb = new HSSFWorkbook();

//创建工作表

HSSFSheet sheet = wb.createSheet("new sheet");

for(int i=0;i<3;i++){

//设置列宽

sheet.setColumnWidth(i, 3000);

}

//创建行

HSSFRow row = sheet.createRow(0);

row.setHeightInPoints(30);//设置行高

//创建单元格

HSSFCell cell = row.createCell(0);

cell.setCellValue("用户信息表");

//合并单元格

sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 2));

//创建行

HSSFRow row1 = sheet.createRow(1);

//标题信息

String[] titles = {"ID","用户名","密码"};

for(int i=0;i<3;i++){

//创建单元格

HSSFCell cell1 = row1.createCell(i);

cell1.setCellValue(titles[i]);

}

//模拟数据,实际情况下String[]多为实体bean

List<String[]> list = new ArrayList<String[]>();

list.add(new String[]{"1","zhangsan","111"});

list.add(new String[]{"2","lisi","222"});

list.add(new String[]{"3","wangwu","333"});

//循环赋值

for(int i=0;i<list.size();i++){

//创建行

HSSFRow row2 = sheet.createRow(i+2);

//创建单元格

HSSFCell cell1 = row2.createCell(0);

cell1.setCellValue(list.get(i)[0]);

//创建单元格

HSSFCell cell2 = row2.createCell(1);

cell2.setCellValue(list.get(i)[1]);

//创建单元格

HSSFCell cell3 = row2.createCell(2);

cell3.setCellValue(list.get(i)[2]);

}

String filename = "用户信息表";

// 清空response

response.reset();

// 设置response的Header

response.addHeader("Content-Disposition", "attachment;filename="

+ new String(filename.getBytes(),"iso8859-1")+".xls");

//excel写入输出流

wb.write(response.getOutputStream());

OutputStream toClient = new BufferedOutputStream(

response.getOutputStream());

response.setContentType("application/vnd.ms-excel;charset=utf-8");

toClient.flush();

toClient.close();

}

}

4.servlet在web.xml中的相关配置

<servlet>

<servlet-name>DownloadServlet</servlet-name>

<servlet-class>com.company.servlet.DownloadServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>DownloadServlet</servlet-name>

<url-pattern>/DownloadServlet</url-pattern>

</servlet-mapping>

5.访问测试

部署项目到Tomcat,启动Tomcat,访问http://localhost:8080/Chat/DownloadServlet

6.查看下载的excel文件

关于poi的相关知识可以查看我之前的文章《java导出excel之使用poi》,本例还可以不断完善。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表