java 生成EXCEL完整实现(附加代码)

生成Excel 我这里是用的POI 的jar包      请尊重原创,转载时请标明出处 谢谢

需要的jar包 请自行下载

commons-beanutils-1.7.1.jar

commons-lang-2.1.jar

poi-3.10.jar

实体类:

import java.util.Date;

public class Student {
	private String name;
	private String sex;
	private Date age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public Date getAge() {
		return age;
	}
	public void setAge(Date age) {
		this.age = age;
	}
}

测试类:

import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class ExportExcelMain {

	public static String xlsFile="F:\\excel\\test.xls"; //产生的Excel文件的名称

	/**
	 *
	 * 方法描述: main方法
	 * @param args  void
	 * @author Andy  2014-4-29  下午05:42:03
	 */
	public static void main(String[] args) {
		try {
			FileOutputStream os = new FileOutputStream(xlsFile);
			String[] strMeaning={"名称","性别","年龄"};
			String[] strName={"name","sex","age"};
			List<Student> ls=new ArrayList<Student>();
			for(int i=0;i<3;i++){
				Student s=new Student();
				s.setName("我的名称"+i);
				s.setSex("我的性别"+i);
				s.setAge(new Date());
				ls.add(s);
			}
			System.out.println("进入导出方法");
			ExportExcel.exportExcel(strMeaning, strName, ls, os);
		} catch (Exception  e1){
			e1.getStackTrace();
		}
	}
}

生成Excel类:

import java.io.OutputStream;
import java.lang.reflect.InvocationTargetException;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;

import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.math.NumberUtils;
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.poi.hssf.util.HSSFColor;

public class ExportExcel {

	private static SimpleDateFormat SDF = null;

	/**
	 *
	 * 方法描述:生成调用的方法
	 * @param strMeaning	表头的数组
	 * @param strName		表字段数组
	 * @param collection	表数据集合
	 * @param os			输出流
	 * @throws Exception  void
	 * @author Andy  2014-4-29  下午05:40:57
	 */
	public static void exportExcel(String[] strMeaning,String[] strName,Collection<?> collection,OutputStream os) throws Exception{
		HSSFWorkbook wb = ExportExcel.generateExcelforObject(strMeaning,strName,"",collection);
		wb.write(os);
	}

	private static HSSFWorkbook generateExcelforObject(String[] strMeaning,String[] strName,String str,Collection<?> collection) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
		HSSFWorkbook wb = new HSSFWorkbook();
		if(collection==null || collection.size()<1)return wb; //无数据侧返回
		if(strMeaning==null || strMeaning.length<1)return wb; //表头为空侧返回
		if(strName==null || strName.length<1)return wb;    //字段侧返回
		if(strMeaning.length!=strName.length)return wb;    //两个数组长度不同侧返回
		HSSFRow row=null;
		short rowNum = 0;
		//设置工作簿的名称
		String sheetTitle=StringUtils.isEmpty(str)?"Sheet1":str;
		HSSFSheet sheet = wb.createSheet();
		wb.setSheetName(0,sheetTitle);
		//设置标题
		row = sheet.createRow(rowNum);
		setTitle(row, strMeaning,wb);
		for (Iterator<?> iter = collection.iterator(); iter.hasNext();) {
			Object exportEle = iter.next();
			// 行对象
			row = sheet.createRow(++rowNum);
			//设置对应值
			setRow(row, strName, exportEle);
		}
		return wb;
	}

	/**
	 * 方法描述: 为Excel页中的每个横行设置标题
	 * @param row
	 * @param strMeaning
	 * @param wb
	 * @throws IllegalAccessException
	 * @throws InvocationTargetException
	 * @throws NoSuchMethodException  void
	 * @author Andy  2014-4-29  下午05:45:45
	 */
	@SuppressWarnings("deprecation")
	private static void setTitle(HSSFRow row,String[] strMeaning,HSSFWorkbook wb) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException{
		HSSFCellStyle style = wb.createCellStyle();
	    // 设置这些样式
	    style.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.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 = wb.createFont();
//	    font.setColor(HSSFColor.WHITE.index);  //设置字体颜色
	    font.setFontHeightInPoints((short)10);
//	    font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);  //设置字体加粗
	    // 把字体应用到当前的样式
	    style.setFont(font);
		for (int k = 0; k < strMeaning.length; k++) {
			HSSFCell cell = row.createCell((short)k);
			cell.setCellStyle(style);
			cell.setCellValue(strMeaning[k]);
		}
	}

	/**
	 *
	 * 方法描述: 为Excel页中的每个横行设置值
	 * @param row
	 * @param strName
	 * @param exportModel
	 * @throws IllegalAccessException
	 * @throws InvocationTargetException
	 * @throws NoSuchMethodException  void
	 * @author Andy  2014-4-29  下午05:44:02
	 */
	@SuppressWarnings("deprecation")
	private static void setRow(HSSFRow row,String[] strName,Object exportModel) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException{
		Object temp=null;
		for (int k = 0; k < strName.length; k++) {
			// Cell对象
			HSSFCell cell = row.createCell((short) k);
			//设置对应值
			try {
				//检查该实体是否有这个属性
				temp = PropertyUtils.getProperty(exportModel, strName[k]);
			} catch (Exception e) {
				e.getStackTrace();
				continue;
			}
			if(temp==null){
				cell.setCellValue(StringUtils.EMPTY);
			}else{
				if(temp instanceof Date){
					cell.setCellValue(getDateTimeFormat().format(Date.class.cast(temp)));
				}else if(NumberUtils.isNumber(temp.toString())){
					cell.setCellValue(Double.parseDouble(temp.toString()));
				}else{
					cell.setCellValue(temp.toString());
				}
			}
		}
	}

	/**
	 * 方法描述: 获取系统时间格式
	 * @return  SimpleDateFormat
	 * @author Andy  2014-4-29  下午05:44:39
	 */
	public static SimpleDateFormat getDateFormat(){
		if(SDF==null){SDF=new SimpleDateFormat("yyyy-MM-dd");}
		return SDF;
	}

	/**
	 * 方法描述: 获取系统精确时间格式
	 * @return  SimpleDateFormat
	 * @author Andy  2014-4-29  下午05:44:27
	 */
	public static SimpleDateFormat getDateTimeFormat(){
		if(SDF==null){SDF=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");}
		return SDF;
	}

}

请尊重原创,转载时请标明出处 . O(∩_∩)O谢谢~

时间: 2024-10-09 06:21:29

java 生成EXCEL完整实现(附加代码)的相关文章

java生成excel表格和pdf并实现下载弹出框

今天在pdf和excel中都实现了在浏览器弹出下载框 将之前在网上查找的生成excel表格代码稍微修改下: public class CreateSimpleExcelToDisk { /** * @功能:手工构建一个简单格式的Excel */ private static List<News> getNews() throws Exception { List<News> data = new ArrayList<News>(); NewsDao dao = new

java生成excel文件工具类实例

import java.io.File; import java.io.IOException; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; import jxl.write.biff.RowsExceededException; import org.

Java生成Excel文件

1.设计源码 /** * * @title:ExcelUtils.java * @Package:com.you.utils * @Description:<h3>一句话描述功能</h3> * @author:游海东 * @date:2015-3-21下午10:17:34 * @version V1.0 * */ package com.you.utils; import java.io.File; import java.io.IOException; import jxl.Wo

java生成excel和读取excel例子

关于使用java的操作excel的方法有很多种,我的http://blog.csdn.net/qq_20545159/article/details/45132041价绍过,下面是使用jxl生成xls格式的excel简单的代码. 使用jxl生成excel文件首先必须将jxl.jar的包加到你的项目的路径下. package com.silence.excel; import java.io.File; import jxl.Workbook; import jxl.write.Label; im

Java生成excel导出文件

1.导出list集合类型数据文件 package com.mi.entity; import java.util.Date; public class Student { private int id; private String name; private int age; private Date birth; public Student(int id, String name, int age, Date birth) { super(); this.id = id; this.nam

java生成Excel两种方式

方法一,利用第三方jar包:jxl.jar 无论方法一方法二最后最好用转换成流传给前端. 1 public void createExcel(){ 2 try{ 3 //打开文件 4 WritableWorkbook workbook = Workbook.createWorkbook(new File("test.xls")); 5 //生成名为"第一页"的工作表,参数0表示这是第一页 6 WritableSheet sheet = workbook.create

java生成Excel及操作Excel

JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表.因为它是使用Java编写的,所以我们在Web应用中可以通过JSP.Servlet来调用API实现对Excel数据表的访问. 下载: 官方网站 http://www.andykhan.com/jexcelapi/ 下载最新版本(本人下的是jexcelapi_2_6

java生成excel报表

使用 apache poi包来实现该功能 包可以通过官网下载,也可以通过 http://download.csdn.net/detail/ch717828/8361309 下载 接下来看代码 private static String xls2003 = "myexcel.xls"; public static void main(String[] args) { //创建2003 excel String filePath = generateExcel2003(xls2003);

JAVA生成EXCEL图形

跟据客户的要求,需要开发一套包括图形的报表,还需要导出WORD 图表需要这样: 这样: 这样: 还有这样: 接下来是实现思路: 以往用的最多的就是JFreechart,手上也有实现各种图形的资源,但是领导说用它做的图形太丑了, 所以没什么卵用. FusionCharts到是漂亮,但是没有办法实现上述图表,客户也不能接受替代方案,同样没什么卵用 然后就是百度ECharts,漂亮.功能强大.灵活性强(JS/HTML5实现,可以随意更改源码), 但是有些功能不支待IE8, 还是没什么卵用 想了很多方法