配置简单功能强大的excel工具类搞定excel导入导出工具类(一)mm转发

这是一个J2EE项目中用于Excel导入导出的工具类,通过简单注解实体类,实现快速导出和导入功能。工具类支持自定义列名、列位置、提示信息、下拉选择限制和只导出标题等特性。
摘要由CSDN通过智能技术生成

对于J2EE项目导入导出Excel是最普通和实用功能,本工具类使用步骤简单,功能强大,只需要对实体类进行简单的注解就能实现导入导出功能,导入导出操作的都是实体对象.

请看一下这个类都有哪些功能:
      * 1.实体属性配置了注解就能导出到excel中,每个属性都对应一列.
      * 2.列名称可以通过注解配置.
      * 3.导出到哪一列可以通过注解配置.
      * 4.鼠标移动到该列时提示信息可以通过注解配置.
      * 5.用注解设置只能下拉选择不能随意填写功能.
      * 6.用注解设置是否只导出标题而不导出内容,这在导出内容作为模板以供用户填写时比较实用.

请看一下效果图:

请看一下使用步骤:

1.写一个实体类,并设置注解配置.
2.实例化一个ExcelUtil对象,调用exportExcel或importExcel方法.

请看一个demo.

1.写一个实体类,并设置注解配置.

package com.tgb.lk.test03;

import com.tgb.lk.util.ExcelVOAttribute;

public class StudentVO {
@ExcelVOAttribute(name = “序号”, column = “A”)
private int id;

@ExcelVOAttribute(name = "姓名", column = "B", isExport = true)
private String name;

@ExcelVOAttribute(name = "年龄", column = "C", prompt = "年龄保密哦!", isExport = false)
private int age;

@ExcelVOAttribute(name = "班级", column = "D", combo = { "五期提高班", "六期提高班",
		"七期提高班" })
private String clazz;

@ExcelVOAttribute(name = "公司", column = "F")
private String company;

//get和set方法(略)...

@Override
public String toString() {
	return "StudentVO [id=" + id + ", name=" + name + ", company="
			+ company + ", age=" + age + ", clazz=" + clazz + "]";
}

}
2.实例化一个ExcelUtil对象,调用exportExcel或importExcel方法.
(1)导出

package com.tgb.lk.test03;

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

import com.tgb.lk.util.ExcelUtil;

/*

  • 使用步骤:

  • 1.新建一个类,例如StudentVO.

  • 2.设置哪些属性需要导出,哪些需要设置提示.

  • 3.设置实体数据

  • 4.调用exportExcel方法.
    */
    public class ExportTest03 {
    public static void main(String[] args) {
    // 初始化数据
    List list = new ArrayList();

     StudentVO vo = new StudentVO();
     vo.setId(1);
     vo.setName("李坤");
     vo.setAge(26);
     vo.setClazz("五期提高班");
     vo.setCompany("天融信");
     list.add(vo);
    
     StudentVO vo2 = new StudentVO();
     vo2.setId(2);
     vo2.setName("曹贵生");
     vo2.setClazz("五期提高班");
     vo2.setCompany("中银");
     list.add(vo2);
    
     StudentVO vo3 = new StudentVO();
     vo3.setId(3);
     vo3.setName("柳波");
     vo3.setClazz("五期提高班");
     list.add(vo3);
    
     FileOutputStream out = null;
     try {
     	out = new FileOutputStream("d:\\success3.xls");
     } catch (FileNotFoundException e) {
     	e.printStackTrace();
     }
     ExcelUtil<StudentVO> util = new ExcelUtil<StudentVO>(StudentVO.class);// 创建工具类.
     util.exportExcel(list, "学生信息", 65536, out);// 导出
     System.out.println("----执行完毕----------");
    

    }

}
(2)导入

package com.tgb.lk.test03;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.List;

import com.tgb.lk.util.ExcelUtil;

public class ImportTest03 {
public static void main(String[] args) {
FileInputStream fis = null;
try {
fis = new FileInputStream(“d:\success3.xls”);
ExcelUtil util = new ExcelUtil(
StudentVO.class);// 创建excel工具类
List list = util.importExcel(“学生信息0”, fis);// 导入
System.out.println(list);
} catch (FileNotFoundException e) {
e.printStackTrace();
}

}

}

看完使用步骤一定对封装的类迫不及待了吧,请继续往下看:

(1)注解实现类:

package com.tgb.lk.util;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target( { java.lang.annotation.ElementType.FIELD })
public @interface ExcelVOAttribute {

/**
 * 导出到Excel中的名字.
 */
public abstract String name();

/**
 * 配置列的名称,对应A,B,C,D....
 */
public abstract String column();

/**
 * 提示信息
 */
public abstract String prompt() default "";

/**
 * 设置只能选择不能输入的列内容.
 */
public abstract String[] combo() default {};

/**
 * 是否导出数据,应对需求:有时我们需要导出一份模板,这是标题需要但内容需要用户手工填写.
 */
public abstract boolean isExport() default true;

}
(2)导入导出封装类:

package com.tgb.lk.util;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.poi.hssf.usermodel.DVConstraint;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDataValidation;
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.ss.util.CellRangeAddressList;

/*

  • ExcelUtil工具类实现功能:

  • 导出时传入list,即可实现导出为一个excel,其中每个对象T为Excel中的一条记录.

  • 导入时读取excel,得到的结果是一个list.T是自己定义的对象.

  • 需要导出的实体对象只需简单配置注解就能实现灵活导出,通过注解您可以方便实现下面功能:

  • 1.实体属性配置了注解就能导出到excel中,每个属性都对应一列.

  • 2.列名称可以通过注解配置.

  • 3.导出到哪一列可以通过注解配置.

  • 4.鼠标移动到该列时提示信息可以通过注解配置.

  • 5.用注解设置只能下拉选择不能随意填写功能.

  • 6.用注解设置是否只导出标题而不导出内容,这在导出内容作为模板以供用户填写时比较实用.

  • 本工具类以后可能还会加功能,请关注我的博客: http://blog.csdn.net/lk_blog
    */
    public class ExcelUtil {
    Class clazz;

    public ExcelUtil(Class clazz) {
    this.clazz = clazz;
    }

    public List importExcel(String sheetName, InputStream input) {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值