java excel导出功能_Java的Excel导出功能

以前用到的:

ExcelServlet

ExcelServlet

*.excel.ExcelServlet

ExcelServlet

*.xls

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;

public class ExcelServlet extends HttpServlet {

private final Logger log = Log4jUtil.getLogger(ExcelServlet.class);

public void init() throws ServletException {

}

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("application/vnd.ms-excel");

RequestPage page = new RequestPage(request, response, request.getSession());

ExcelOperator operator = null;

try {

operator = getOperator(request.getServletPath());

if (operator != null) {

operator.execute(page);

}

} catch (Exception ex) {

log.debug("导出excel出错:" + ex.toString());

ex.printStackTrace();

}

}

/**

* 根据不同的请求path获取不同的导出excel操作

*

* @param path

* @return

*/

public ExcelOperator getOperator(String path) {

return new ReportExcelExport();

}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);

}

public void destroy() {

}

}

import java.io.IOException;

import jxl.write.WriteException;

public abstract class ExcelOperator {

jxl.write.WritableWorkbook excel = null;

int fieldCount = 0;

public RequestPage page;

public void execute(RequestPage page) throws WriteException,

IndexOutOfBoundsException, IOException {

this.page = page;

excel = jxl.Workbook.createWorkbook(this.page.getResponse()

.getOutputStream());

excel.createSheet("sheet1", 0);

setTitle(getTitle());

writeContent(getContent());

write();

}

private void setTitle(String[] fields) throws IndexOutOfBoundsException,

WriteException {

this.fieldCount = fields.length;

for (int i = 0; i < fields.length; i++) {

excel.getSheet(0).addCell(new jxl.write.Label(i, 0, fields[i]));

}

}

private void writeContent(java.util.ArrayList cells)

throws IndexOutOfBoundsException, WriteException {

if (cells == null)

return;

for (int i = 1; i <= cells.size(); i++) {

Object obj = cells.get(i - 1);

for (int j = 0; j < fieldCount; j++) {

excel.getSheet(0).addCell(

new jxl.write.Label(j, i, getValue(obj, j)));

}

}

}

public abstract String getValue(Object obj, int index);

public abstract String[] getTitle();

public abstract java.util.ArrayList getContent();

private void write() throws IOException, WriteException, IOException {

excel.write();

excel.close();

}

}

import java.util.ArrayList;

import java.util.HashMap;

public class ReportExcelExport extends ExcelOperator {

@Override

public ArrayList getContent() {

}

/**

* 报表表头

*/

@Override

public String[] getTitle() {

return new String[] { "责任人ID","责任人","责任人角色","年份" };

}

/**

* 单元格的值

*/

@Override

public String getValue(Object obj, int index) {

switch (index) {

case 0:

return values.getUserId();

default:

return "";

}

}

}

ref:

if (request.getHeader("User-Agent").indexOf("MSIE 5.5") != -1) {

response.setHeader("Content-Disposition", "filename=" + fileName);

} else {

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

}

response.setCharacterEncoding("GBK");

//response.setContentType("text/html;charset=GBK");

ServletOutputStream stream = null;

BufferedInputStream buf = null;

FileInputStream fis = null;

try {

stream = response.getOutputStream();

fis = new FileInputStream(file);

buf = new BufferedInputStream(fis);

byte[] readBytes = new byte[4096];

int len = 0;

while ((len = buf.read(readBytes)) != -1) {

stream.write(readBytes, 0, len);

}

stream.flush();

response.setStatus(HttpServletResponse.SC_OK);

response.flushBuffer();

} catch (Exception ex) {

logger.info(ex.toString());

} finally {

if (stream != null) {

try {

stream.close();

} catch (IOException e) {

logger.info(e.toString());

e.printStackTrace();

}

}

if (buf != null) {

try {

buf.close();

} catch (IOException e) {

logger.info(e.toString());

e.printStackTrace();

}

}

if (fis != null) {

try {

fis.close();

} catch (IOException e) {

logger.info(e.toString());

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值