个人项目之JAVA导出Excel

结合自己做的项目,下面是我做的项目的导出Excel的配置:

需要下载导入poi包,自己动手谷歌一下

就以导出员工信息为例

//在com.demo.utils下建立了ExportEmployeeExcel.java
//有需要的同学可以把Employee部分信息修改即可
package com.demo.utils;

import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

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.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;

import com.demo.entity.Employee;

public class ExportEmployeeExcel<T>{

	@SuppressWarnings("deprecation")
	public void exportExcel( String[] headers,
			Collection<Employee> dataset, OutputStream out) {
		// 声明一个工作薄
		HSSFWorkbook workbook = new HSSFWorkbook();
		// 生成一个表格
		HSSFSheet sheet = workbook.createSheet();
		// 设置表格默认列宽度为15个字节
		sheet.setDefaultColumnWidth((short) 15);
		// 生成一个样式
		HSSFCellStyle style = workbook.createCellStyle();
		// 设置这些样式
		style.setFillForegroundColor(HSSFColor.WHITE.index);
		style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
		style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
		style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
		style.setBorderRight(HSSFCellStyle.BORDER_THIN);
		style.setBorderTop(HSSFCellStyle.BORDER_THIN);
		style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
		// 生成一个字体
		HSSFFont font = workbook.createFont();
		font.setColor(HSSFColor.RED.index);
		font.setFontHeightInPoints((short) 12);
		font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
		// 把字体应用到当前的样式
		style.setFont(font);
		// 生成并设置另一个样式
		HSSFCellStyle style2 = workbook.createCellStyle();
		style2.setFillForegroundColor(HSSFColor.WHITE.index);
		style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
		style2.setBorderBottom(HSSFCellStyle.BORDER_THIN);
		style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);
		style2.setBorderRight(HSSFCellStyle.BORDER_THIN);
		style2.setBorderTop(HSSFCellStyle.BORDER_THIN);
		style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
		style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
		// 生成另一个字体
		HSSFFont font2 = workbook.createFont();
		font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
		// 把字体应用到当前的样式
		style2.setFont(font2);

		// 产生表格标题行
		HSSFRow row = sheet.createRow(0);
		for (short i = 0; i < headers.length; i++) {
			HSSFCell cell = row.createCell(i);
			cell.setCellStyle(style);
			HSSFRichTextString text = new HSSFRichTextString(headers[i]);
			cell.setCellValue(text);
		}

		// 遍历集合数据,产生数据行
		Iterator<Employee> it = dataset.iterator();

		HSSFFont font3 = workbook.createFont();
		font3.setColor(HSSFColor.BLUE.index);

		List<List<String>> listRow=new ArrayList<List<String>>();
		while (it.hasNext()) {
			Employee employee=(Employee)it.next();
			List<String> listHol=new ArrayList<String>();
			//输出到Excel的行
			//有需要的将这部分改成自己需要输出的即可
			listHol.add(employee.getEmpId()+"");
			listHol.add(employee.getEmpName()+"");
			String Sex = "0";
			if ("0".equals(employee.getSex())) {
				Sex="男";
			}else if ("1".equals(employee.getSex())) {
				Sex="女";
			}
			listHol.add(Sex+"");
			listHol.add(employee.getBirthDay());
			listHol.add(employee.getEmpDesc()+"");
			listHol.add(employee.getEmpRemark()+"");
			listHol.add(employee.getDept().getDeptName()+"");
			listHol.add(employee.getEducation().getEduName()+"");
			listHol.add(employee.getRolers().getRolerName()+"");
			listRow.add(listHol);
		}
		//以上是需要修改的部分

		int index = 1;
		for (List<String> list : listRow) {
			row = sheet.createRow(index);
			short i=0;
			for (String string : list) {
				//HSSFCell cell0 = row.createCell(i);
				HSSFCell cell0=row.createCell(i);
				cell0.setCellStyle(style2);
				HSSFRichTextString richString = new HSSFRichTextString(string);
				richString.applyFont(font3);
				cell0.setCellValue(richString);
				i++;
			}
			index++;
		}

		try {
			workbook.write(out);
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
}

下面是调用servlet实现部分:

//com.demo.servlet下的主要实现代码
if ("exportEmp".equals(method)) {
				resp.addHeader("Content-Disposition", "attachment;filename=Employee.xls");
				List<Employee> list=empService.findAllInfo();//全查
				ExportEmployeeExcel<Employee> ex=new ExportEmployeeExcel<Employee>();
				String[] headers={"员工编号","员工姓名","性别","出生日期","描述","备注","所在部门","学历","角色"};
				try {
					OutputStream out=resp.getOutputStream();
					ex.exportExcel(headers,list, out);
					out.close();
				} catch (IOException e){
					e.printStackTrace();
				}
			}

dao层和service层代码就忽略了

如果还不明白的联系我

时间: 2024-10-26 13:24:56

个人项目之JAVA导出Excel的相关文章

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

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

java导出excel超出65536条处理( 转)

java导出excel超出65536条处理 IT社区推荐资讯 - ITIndex.net Apr 20 poi包导出excel超出65536报错: java.lang.IllegalArgumentException: Invalid row number (65536) outside allow 解决办法1:XSS替换HSS poi用: XSSFWorkbook wb = new XSSFWorkbook(); XSSFSheet sheet1= wb.createSheet("test&q

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表 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.servic

java 操作 Excel,java导出excel

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

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 通过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导出excel不需要额外jar包

目前我知道的在java中导出Excel可以用poi或在jsp的文件头改变输出流.下面再介绍一种就用java基础包导出的Excel.导出的格式形如: 源码如下: package csvExcel; import java.io.FileWriter; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java