`

Java创建和下载excel文件

阅读更多
package com.g3.hrp.customer_setting.jde.common;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import org.apache.commons.beanutils.BeanUtils;
/**
 * Excel操作工具类
 *
 * @author penghuaiyi
 * @date 2011-6-20
 *
 */
public class ExcelUtil {

	private String[] fTags = null;  //标签代号信息

	private String[] fNames = null; //对象属性信息

	private Hashtable allTags= null ; //标签缓存

	public ExcelUtil(){

	}

	public ExcelUtil(String[] fTags,String[] fNames,Hashtable allTags){
		this.fTags = fTags;
		this.fNames = fNames;
		this.allTags = allTags;
	}

	/**
	 * 生成Excel文件
	 * @param path
	 * @param dataList
	 * @return
	 */
	public String createExcel(String path,List dataList){
		File file = new File(path);
		if(!file.exists()){
			file.mkdirs();
		}
       // deleteAllFile(file);
		file = new File(file,System.currentTimeMillis()+".xls");
		WritableWorkbook book=null;
		try {
			book = Workbook.createWorkbook(file);
			WritableSheet sheet = book.createSheet(file.getName(), 0);
			this.setHeader(sheet); //设置Excel标题信息
            this.setBody(sheet,dataList); // 设置Excel内容主体信息
			book.write();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (WriteException e) {
			e.printStackTrace();
		} catch(Exception e){
			e.printStackTrace();
		}finally{
			try {
				book.close();
			} catch (WriteException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return file.getAbsolutePath();
	}

	/**
	 * 清空file下的所有子文件
	 * @param file
	 */
	public void deleteAllFile(File file){
		try{
			File[] files = file.listFiles();
			for(int i=0;i<files.length;i++){
				files[i].delete();
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}

	/**
	 * 设置Excel标题信息
	 * @param sheet
	 * @throws WriteException
	 */
	public void setHeader(WritableSheet sheet) throws WriteException{
		String[] header = new String[fTags.length];
		for(int i=0;i<fTags.length;i++){
			String fTagsName=(String)allTags.get("F_"+fTags[i].toUpperCase());
			header[i] = fTagsName!=null ? fTagsName : fTags[i];
		}
		this.setHeader(sheet, header);
	}

	/**
	 * 设置Excel标题信息
	 * @param sheet
	 * @param column
	 * @throws WriteException
	 */
	public void setHeader(WritableSheet sheet,String[] column) throws WriteException{
		WritableCellFormat headerFormat = new  WritableCellFormat();
        headerFormat.setAlignment(Alignment.CENTRE);  //水平居中对齐
        headerFormat.setVerticalAlignment(VerticalAlignment.CENTRE);   //竖直方向居中对齐
		headerFormat.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);
		for(int i=0;i<column.length;i++){
			Label label = new Label(i,0,column[i],headerFormat);
			sheet.addCell(label);
			sheet.setColumnView(i, 20);
			sheet.setRowView(0, 500);
		}
	}



    /**
     * 设置Excel内容主体信息
     * @param sheet
     * @param rowList
     * @throws Exception
     */
	public void setBody(WritableSheet sheet,List rowList) throws Exception{
	    this.setBody(sheet, rowList, fNames);
	}

	 /**
     * 设置Excel内容主体信息
     * @param sheet
     * @param rowList
     * @param column
     * @throws Exception
     */
	public void setBody(WritableSheet sheet,List rowList,String[] column) throws Exception{
	   WritableCellFormat bodyFormat = new  WritableCellFormat();
	   bodyFormat.setAlignment(Alignment.CENTRE); //水平居中对齐
	   bodyFormat.setVerticalAlignment(VerticalAlignment.CENTRE);   //竖直方向居中对齐
	   bodyFormat.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);
	   Object obj =null;
	   Label label = null;
	   for(int i=0;i<rowList.size();i++){
		   obj = rowList.get(i);
		   for(int j=0;j<column.length;j++){
			   if(obj instanceof Map){
				   label = new Label(j,i+1,String.valueOf(((Map)obj).get(column[j].toLowerCase())),bodyFormat);
			   }else{
				   label = new Label(j,i+1,BeanUtils.getProperty(obj, column[j]),bodyFormat);
			   }
			   sheet.addCell(label);
			   sheet.setRowView(i+1, 350);
		   }
	   }
	}


	/**
	 * 文件下载
	 * @param response
	 * @param filePath 文件路径
	 * @param fileName 文件名称
	 */
	public void download(HttpServletResponse response, String filePath, String fileName)throws IOException {
		FileInputStream fis = null;
		OutputStream os = null;
		try {
			fis = new FileInputStream(filePath);
			os = response.getOutputStream();// 取得输出流
			response.reset();// 清空输出流
			response.setHeader("Content-disposition", "attachment; filename=" + fileName);// 设定输出文件头
			response.setContentType("application/x-download");
			byte[] mybyte = new byte[8192];
			int len = 0;
			while ((len = fis.read(mybyte)) != -1) {
				os.write(mybyte, 0, len);
			}
			os.close();
		}catch (IOException e) {
            throw e;
		}
	}

}

分享到:
评论
1 楼 u010940863 2013-07-18  
大神,这个工具类怎么用啊!求讲解啊!

相关推荐

    利用Java 创建和读取Excel文档

    通过上述两个示例,我们可以看到Apache POI库提供了一套非常完善的API,可以方便地使用Java创建和读取Excel文档。这些技术对于日常工作中处理大量数据非常有用,可以帮助开发者更高效地完成任务。当然,Apache POI的...

    java 创建EXCEL文件,并向EXCEL中写入数据

    本示例将介绍如何使用Java创建Excel文件并写入数据,主要涉及的库是`jxl`,这是一个用于读写Excel文件的开源Java库。 首先,我们需要引入`jxl`库。`jxl.jar`包含了一系列的类和接口,用于处理Excel文件的各种操作。...

    java实现生成下载Excel

    以上就是使用Java和Apache POI库生成及下载Excel文件的基本步骤。当然,实际应用中可能需要处理更复杂的数据结构、格式化样式、图表以及更多的自定义功能,但这些都需要根据具体需求进行扩展和调整。在处理大量数据...

    Java创建和读取Excel

    创建Excel文件: 1. 引入依赖:在你的项目中,你需要添加Apache POI的依赖库。如果是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.apache.poi &lt;artifactId&gt;poi &lt;version&gt;4.1.2 ...

    java中将多个excel打包成zip文件下载.rar

    在Java编程环境中,将多个Excel文件打包成ZIP文件并实现下载功能是一项常见的需求,尤其是在数据导出或批量处理场景中。下面将详细讲解这个过程涉及的主要知识点。 首先,我们需要了解Java中的`java.util.zip`包,...

    前台从java后台获取excel表格并下载

    6. **生成Excel表格**:Java中有多种库可以用来创建Excel文件,如Apache POI。利用这些库,后端可以从数据库中获取数据,然后填充到Excel工作表中,创建所需的格式和样式。 7. **返回给前端并下载**:在生成Excel...

    Java生成Excel文件

    本篇文章将深入探讨如何使用Java来创建Excel文件,并基于提供的标签“源码”和“工具”分享一些实用的方法。 首先,Java生成Excel文件通常会用到Apache POI库,这是一个流行的API,用于读写Microsoft Office格式的...

    java poi 根据excel模板生成excel文件

    在本文中,我们将深入探讨如何使用Java POI库根据已有的Excel模板生成新的Excel文件。 首先,理解“模板”在Excel中的概念非常重要。模板通常包含预设的格式、样式、公式和数据结构,可以作为创建新文件的基础。在...

    java代码生成excel表并下载

    总的来说,Java通过Apache POI库提供了一种强大而灵活的方式来生成Excel文件,结合Web框架,可以方便地实现文件下载功能,满足各种业务需求。在开发过程中,确保对性能进行优化,避免内存溢出,同时关注代码的可读性...

    java 生成Excel文件

    Excel文件格式(.xlsx或.xls)通常由Apache POI库支持,这是一个强大的API,允许Java程序读取、写入和修改Microsoft Office格式的文档,包括Excel。 首先,要使用Apache POI库生成Excel文件,你需要在项目中引入...

    Java导出数据到Excel文件中(支持多表头)

    在Java编程中,导出数据到Excel文件是一项常见的任务,特别是在数据分析、报表...通过以上步骤,我们可以构建一个灵活且高效的Java程序,将数据库中的数据导出为具有多级表头的Excel文件,满足数据分析和报告的需求。

    上传下载Excel的Demo,java代码

    标题 "上传下载Excel的Demo,java代码" 描述了这个示例项目的核心功能,即在Java环境下处理Excel文件的上传和下载操作。这通常涉及到Web应用程序中的数据导入导出功能,便于用户通过浏览器进行数据的交互。在这个项目...

    java excel api

    Java Excel API,通常指的是jxl库,是一个广泛使用的开源Java库,用于读写Microsoft Excel文件。这个库使得在Java程序中处理Excel数据变得极其便捷,无论是读取现有的工作簿、创建新的工作簿,还是修改现有表格,jxl...

    java导出excel(写入到excel后再下载)示例

    - `Service.java`: 服务层负责实际的数据操作,比如从数据库中获取数据并创建Excel文件。 - `DAO.java`: 数据访问对象,用于与数据库交互,获取数据。 - `ExcelUtils.java`: 工具类,包含Apache POI相关的辅助方法,...

    java 生成并下载excel

    在Java编程中,生成并下载Excel文件是一项常见的需求,特别是在数据导出、报表生成或数据分析等领域。本篇文章将深入探讨如何使用...通过熟练掌握这些知识,你可以轻松地在Java应用中实现Excel文件的生成和下载功能。

    java实现自定义excel模板导出excel并可保存客户端和在线打开

    本文将深入探讨如何使用Java和jxl库来实现这一功能,让开发者能够创建任意复杂格式的Excel文件,并允许用户在客户端保存或在线打开。 首先,我们要了解jxl库。jxl是Java Excel API的缩写,它是一个开源的Java库,...

    Java处理Excel文件-excel文件的创建,删除,写入,读取.pdf

    3. **创建Excel文件**:虽然没有直接提供创建新Excel文件的方法,但可以推测,通过实例化`HSSFWorkbook`并使用`FileOutputStream`写入文件即可创建新的Excel文件。 4. **删除Excel文件**:由于没有内建的删除方法,...

    java导出TXT和Excel文件

    导出Excel文件利用apache的poi第三方包,可在阿帕奇官网下载(最新版本为3.8,支持office2010)。解压文件后,只需要把项目导入到eclipse,再将hibernate.cfg.xml里连接Oracle的URL和用户名、密码更改下。参考entity...

    java excel生成二维码(可以添加图标和文字).zip

    在本项目中,我们主要探讨如何使用Java技术栈,特别是SpringBoot框架,来生成包含二维码的Excel文件。这个压缩包提供了必要的代码示例,包括`qrcode.java`、`MatrixToImageWriter.java`和`LogoConfig.java`三个关键...

Global site tag (gtag.js) - Google Analytics