`
soongbo
  • 浏览: 88570 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java中操作Excel

    博客分类:
  • Java
阅读更多
   在企业级开发中,经常遇到读写excel的操作,在此将一些简单的excel操作做了一个实例:
package com.test.core.utils;

import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.List;
import java.util.Vector;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.struts2.ServletActionContext;

public abstract class ExportExcel<T> {
	
	/**
	 * export Excel for Data
	 * @param list
	 */
	public void exportExcel(List<T> entities, String fileName) {
		try {
			
			HSSFWorkbook workBoook = exportDeleteExcel(createExportData(entities, fileName));
			OutputStream outStream = getOutputStream(ServletActionContext.getRequest(),
						ServletActionContext.getResponse(), fileName);
			workBoook.write(outStream);
			outStream.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * abstract method for create excel info
	 * @param entities, operator
	 * @return
	 */
	public abstract BaseDataExportInfo createExportData(List<T> entities, String fileName);
	
	/**
	 * set information for Head
	 * @param baseData
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("deprecation")
	protected HSSFWorkbook exportDeleteExcel(BaseDataExportInfo baseData)
			throws Exception {

		HSSFWorkbook workbook = new HSSFWorkbook();

		HSSFSheet sheet = workbook.createSheet();

		workbook
				.setSheetName(baseData.getSheetIndex(), baseData.getSheetName());

		HSSFRow contentsRow = sheet.createRow(0);
		contentsRow.setHeight((short) 500); // 设置行高s

		/* 设置表头信息 */
		HSSFFont titleFont = workbook.createFont();
		titleFont.setFontName("宋体");
		titleFont.setFontHeightInPoints((short) 16);
		titleFont.setBoldweight((short) 20);
		HSSFCellStyle titleStyle = workbook.createCellStyle();
		titleStyle.setFont(titleFont);

		titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION); // 居中

		List<String> head = baseData.getTableHead();
		for (short j = 0; j < head.size(); j++) {

			// 设置列宽
			if (j == 1) {
				sheet.setColumnWidth(j, (short) 14000);
			} else {
				sheet.setColumnWidth(j, (short) 8000);
			}

			HSSFCell contentsCell = contentsRow.createCell(j);
			contentsCell.setCellType(HSSFCell.CELL_TYPE_STRING);
			contentsCell.setCellStyle(titleStyle);
			contentsCell.setCellValue(head.get(j));
		}

		/* 设置表体信息 */
		if (null != baseData.getRowList()) {
			List<Vector<String>> rowList = baseData.getRowList();
			for (short i = 0; i < rowList.size(); i++) {
				Vector<String> rowInfo = rowList.get(i);
				HSSFRow row = sheet.createRow(i + 1);
				/** 表体 */
				HSSFFont font = workbook.createFont();
				/** 设置字体样式 */
				font.setFontName("宋体");
				HSSFCellStyle cellStyle = workbook.createCellStyle();
				cellStyle.setFont(font);
				cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 下边
				cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); // 左边
				cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); // 右边
				cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); // 上边

				cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION); // 居左
				for (short k = 0; k < rowInfo.size(); k++) {
					HSSFCell cell = row.createCell(k);
					cell.setCellType(HSSFCell.CELL_TYPE_STRING);
					cell.setCellStyle(cellStyle);

					cell.setCellValue(rowInfo.get(k));
				}

			}
		}
		return workbook;
	}
	
	/**
	 * OutPutStream for Excel
	 * @param request
	 * @param response
	 * @return
	 */
	protected OutputStream getOutputStream(HttpServletRequest request,HttpServletResponse response, String name) {
		OutputStream outputStream = null;    

		 try {
			outputStream = new BufferedOutputStream(response.getOutputStream());
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	    String	fileName = "Excel_" + name + "_" + DateUtils.format(new Date()) + ".xls";
        response.setContentType("application/vnd.ms-excel");
        try {
       	 response.setHeader("content-disposition",
			                        "attachment;filename=\"" +
			                        new String(fileName.getBytes(),
			                                   response.getCharacterEncoding()) +
			                        "\"");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		
		return outputStream;
	}
	
}


只要继承上变的抽象类,实现对应的方法,然后声明该处理bean到Spring中,就可以运用该组件了。
分享到:
评论

相关推荐

    java中操作excel实例代码

    很完整的实例,用eclipse导入工程即可,里面需要的jar包(jxl.jar)都有,简单的操作了excel,数据库,实现了导入导出等功能,可以自己建立数据库,本软件中使用的是oracle数据库的连接和驱动。

    java中读取Excel例子

    总之,Java中操作Excel文件是通过Apache POI库实现的,该库提供了丰富的API来读取、写入以及修改Excel文件。在"ExcellWriter.java"这个例子中,我们可以学习到如何使用这些API进行实际的文件操作。理解并掌握这些...

    Java中用于操作Excel格式文件的类库

    "Java中用于操作Excel格式文件的类库"指的是利用特定的Java库来读取、写入或者修改Excel文件。在这个描述中,提到了一个名为"jexcelapi"的开源扩展类库,它允许开发者在Java应用中便捷地处理Excel 2003格式的数据。 ...

    Java操作Excel

    在IT行业中,Java是一种广泛应用的编程语言...总的来说,Java操作Excel是一项实用的技能,通过利用Apache POI和JExcelAPI等库,我们可以方便地在Java程序中处理Excel文件,实现数据的导入导出、分析和报表生成等功能。

    Java中操作Excel表格方法.pdf

    Java 操作 Excel 表格是常见的数据处理需求,特别是在企业级应用中,例如数据分析、报表生成等场景。本文将详细介绍如何使用 Java Excel API(jxl)库来读取和创建 Excel 文件。 首先,jxl 是一个广泛使用的开源库...

    JdbcExcel纯Java连接Excel

    在IT行业中,与Java编程相关的任务常常涉及到数据处理,而Excel作为常见的数据管理工具,其与Java的交互显得尤为重要。...结合压缩包中的资源,学习者将能够深入理解并应用Java操作Excel的各种技巧。

    jxl.jar用于在Java中操作Excel

    《在Java中使用jxl.jar库操作Excel》 在Java编程环境中,处理Excel文件是一项常见的需求,例如数据导入导出、报表生成等。在这种场景下,jxl.jar库扮演了重要的角色。它是一个轻量级的Java库,专门用于读取和写入...

    Java中操作Excel表格

    "Java中操作Excel表格" Java语言中的Excel操作是指使用Java编程语言来读取、写入和操作Excel电子表格文件的过程。下面我们将对Java中操作Excel表格的知识点进行详细说明。 Java Excel API Java Excel API是Java...

    jxcell API (java中操作Excel生成报表的利器)

    **Jxcell API** 是一个在Java环境中用于创建和操作Excel报表的强大工具,尤其适合于生成复杂的Excel报表。它提供了一系列详细的API,使得开发者能够轻松地实现数据的导入导出,样式设定,公式计算等功能,极大地提升...

    javaexcel操作.rar

    以下将详细讲解Java中操作Excel的核心知识点: 1. **API选择**: Java提供了多种库来处理Excel文件,最常用的是Apache POI和JExcelAPI。Apache POI是开源项目,功能强大且广泛使用,支持最新的Excel格式(.xlsx)...

    java操作Excel的真删改查例子

    在Java编程中,处理Excel文件是一项常见的任务,特别是在...以上就是"java操作Excel的真删改查例子"所涵盖的关键技术点,通过学习和实践这些示例,开发者可以熟练地在Java环境中处理Excel文件,完成各种数据操作任务。

    jxl Java操作Excel

    java操作Excel java操作Excel java操作Excel

    java操作excel

    "java操作excel"这个主题就是关于如何利用Java与Excel进行交互的知识点。在Java世界里,JXL库(Java Excel API)是一个广泛使用的第三方库,它允许开发者读取、写入和修改Excel文件。下面我们将深入探讨JXL库及其在...

    Java 操作Excel和Word的所有资料

    Java 操作Excel和Word的所有资料Java 操作Excel和Word的所有资料Java 操作Excel和Word的所有资料Java 操作Excel和Word的所有资料Java 操作Excel和Word的所有资料Java 操作Excel和Word的所有资料Java 操作Excel和Word...

    Java操作Excel表格

    当我们谈论“Java操作Excel表格”时,通常是指使用Java来读取、写入或处理Microsoft Excel文件,这在数据分析、报表生成或者数据交换等场景中非常常见。本主题将围绕Java如何与Excel交互进行深入探讨。 首先,Java...

    JavaExcel

    在Java中操作Excel文件,JExcelAPI提供了以下关键功能: 1. **读取Excel文件**:通过Workbook类,开发者可以打开并访问Excel工作簿中的所有工作表。Sheet类则用于代表工作表,可以获取行和列的数据。例如,可以使用...

    Excel-nurbs-java_java_excel_

    3. **Java与Excel交互**:通常使用Apache POI库来在Java中操作Excel文件(XLS和XLSX格式)。POI提供了API来创建、读取和修改Excel工作表,包括单元格数据、公式和样式。 4. **数据序列化和反序列化**:将NURBS数据...

Global site tag (gtag.js) - Google Analytics