实现java导出Excel表

实现java导出Excel表

1、项目需要导入的包

其中jxl.jar就是操作excel表的核心包,其他的包都是struts2的包

2、项目的结构

ExcelAction.java

package com.jxl.action;

import java.io.InputStream;
import java.io.UnsupportedEncodingException;

import com.jxl.service.ExcelServiceImpl;
import com.jxl.service.IExcelService;

public class ExcelAction {

	    private String fileName;
	    private InputStream excelStream;  

	    public String getFileName() {
	    	try {
	            fileName = new String(fileName.getBytes(),"ISO8859-1");
	        } catch (UnsupportedEncodingException e) {
	            e.printStackTrace();
	        }
	        return fileName + ".xls";
		}
		public void setFileName(String fileName) {
			this.fileName = fileName;
		}
		public InputStream getExcelStream() {
			return excelStream;
		}
		public void setExcelStream(InputStream excelStream) {
			this.excelStream = excelStream;
		}

	    public String exportExcel(){
	        IExcelService es = new ExcelServiceImpl();
	        excelStream = es.getExcelInputStream();
	        this.fileName = "学生成绩表";
	        return "excel";
	    }

}

IExcelService.java

package com.jxl.service;

import java.io.InputStream;

public interface IExcelService {
	/**
	 * 获得Excel表的输入流
	 * @return InputStream
	 *                输入流
	 */
	public InputStream getExcelInputStream();

}

ExcelServiceImpl.java

package com.jxl.service;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;  

import jxl.Workbook;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;  

import com.jxl.service.IExcelService;

public class ExcelServiceImpl implements IExcelService {  

    @Override
    public InputStream getExcelInputStream() {
        //将OutputStream转化为InputStream
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        putDataOnOutputStream(out);
        return new ByteArrayInputStream(out.toByteArray());
    }  

    private void putDataOnOutputStream(OutputStream os) {
        jxl.write.Label label1;
        jxl.write.Label label2;
        WritableWorkbook workbook;
        try {
            workbook = Workbook.createWorkbook(os);
            WritableSheet sheet1 = workbook.createSheet("计算机01班", 0);
            label1 = new jxl.write.Label(0, 0, "计算机01班excel成绩表");
            sheet1.addCell(label1);

            WritableSheet sheet2 = workbook.createSheet("计算机02班", 0);
            label2 = new jxl.write.Label(0, 0, "计算机02班excel成绩表");
            sheet2.addCell(label2);

            workbook.write();
            workbook.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
} 

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	 <!-- 配置 Struts 2 应用中的常量 -->
	 <constant name="struts.i18n.encoding" value="UTF-8"/> 

	 <package name="platform-default" extends="struts-default">
	 	<action name="excel" class="com.jxl.action.ExcelAction" method="exportExcel">
            <!-- 下载文件类型定义,即定义为“stream” -->
            <result name="excel" type="stream">
                <!-- application/vnd.ms-excel表示的是 EXCEL文件 -->
                <param name="contentType">
                    application/vnd.ms-excel
                </param>
                <!-- 下载文件输出流定义 -->
                     <!-- 这里的inputName元素所对应的value值excelStream,在action中一定要有对应的getExcelStream()方法 -->
                <param name="inputName">excelStream</param>
                <!-- 下载文件处理方法 -->
                <param name="contentDisposition">
                <!-- attachment表示附件方式,即下载时打开保存对话窗,filename表示下载时显示的保存时的文件名 -->
                         <!-- 如果不写attachment;或者是写的是inline; 则表示内联,即会在浏览器中尝试打开下载的文件,而不是下载-->
                    attachment;filename=${fileName}  <!-- 在对象的aciton中要有fileName属性和getFileName()方法 -->
                </param>
                <!-- 下载缓冲区的大小 -->
                <param name="bufferSize">1024</param>
            </result>
        </action>
	</package>

</struts>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

  <!-- 设置struts 2过滤器 -->
  <filter>
      <filter-name>struts 2</filter-name>
      <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
      <filter-name>struts 2</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!-- 设置欢迎页面 -->
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <!-- session超时定义,单位为分钟 -->
  <session-config>
	<session-timeout>30</session-timeout>
  </session-config>

</web-app>

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>首页</title>
  </head>
  <body>
     	<a href="excel.action">去下载一个excel文件</a>
  </body>
</html>

完成以上所有的步骤后,把项目发布到服务器,用浏览器访问index.jsp,里面有功能入口

本实例只实现了最最简单的操作、下载excel表的功能,至于更详细的excel表的属性设置,可以参考 http://merrygrass.iteye.com/blog/558274  和  http://www.blogjava.net/Vincent-chenxj/articles/242512.html

时间: 2024-10-22 01:21:23

实现java导出Excel表的相关文章

Java导出Excel表(poi)名中文乱码问题处理

<pre name="code" class="java">String _filename = ValidateTools.date2Str(date, "yyyyMMddHHmmss"); String filename = f_name + _filename; HSSFSheet sheet; HSSFCell cell; response.setContentType("application/x-download

Java导出Excel表格

利用Java将数据库中的数据导出为excel表格,导出完后可以下载,并压缩成zip格式 使用poi导出excel表,可以设置列宽.单元格合并居中.背景色设置等. 主要代码如下: 前端js代码 1 <body> 2 <button onclick="test()">导出 excel表</button> 3 4 <a id="download" href="#"> <span id="s

Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类

Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ?Copyright 蕃薯耀 2017年9月13日 http://www.cnblogs.com/fanshuyao/ 直接上代码: import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.ref

Java导出Excel三表头

1.问题背景 Java导出Excel表格时,表头出现了三个,即多表头Excel 2.实现源码 /** * * @Project:Report * @Title:ThreeHead.java * @Package:com.you.excel * @Description: * @Author:YouHaiDong * @Date:2015年11月4日 下午3:10:12 * @Version: */ package com.you.excel; import java.io.FileOutputS

Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框

在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.而数据导出的格式一般是EXCEL或者PDF,我这里就用两篇文章分别给大家介绍下.(注意,我们这里说的数据导出可不是数据库中的数据导出!么误会啦^_^) 呵呵,首先我们来导出EXCEL格式的文件吧.现在主流的操作Excel文件的开源工具有很多,用得比较多的就是Apache的POI及JExcelAPI.这里我们用Apache POI!我们先去Apach

Java学习之道:Java 导出EXCEL

1.Apache POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开发人员则可以利用NPOI (POI for .NET) 来存取 POI 的功能. 2.POI结构 HSSF - 提供读写Microsoft Excel XLS格式档案的功能. XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能. HWPF - 提供读写Microsoft

java导出excel报表

1.java导出excel报表: package cn.jcenterhome.util; import java.io.OutputStream;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletResponse;import jxl.Workbook;import jxl.format.Alignment;import jxl.format.Border;import jxl.for

JAVA导出EXCEL实现

JAVA导出EXCEL实现的多种方式 java导出Excel的方法有多种,最为常用的方式就是使用第三方jar包,目前POI和JXL是最常用的二方包了,也推荐使用这两种. POI实现 POI这里不详细解释,可参考徐老师发的博客:http://blog.csdn.net/evangel_z/article/details/7332535,他利用开源组件POI3.0.2动态导出EXCEL文档的通用处理类ExportExcel,详细使用方法下载最新代码看看就可以里,徐老师写的很明了!总之思路就是用Ser

java 操作 Excel,java导出excel

WritableWorkbook out = null; try { response.getServletResponse().reset(); ((HttpServletResponse) response.getServletResponse()).setHeader("Content-Disposition", "attachment;filename=export.xls"); response.getServletResponse().setConten