JAVA POI通用工具类

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JAVA POI数据导入导出工具类

1.Exception处理

public class ExcelException extends Exception {

public ExcelException() {

// TODO Auto-generated constructor stub

}

public ExcelException(String message) {

super(message);

// TODO Auto-generated constructor stub

}

public ExcelException(Throwable cause) {

super(cause);

// TODO Auto-generated constructor stub

}

public ExcelException(String message, Throwable cause) {

super(message, cause);

// TODO Auto-generated constructor stub

}

}

2.POI核心处理

/**

* @author : SUNZK-QQ:1131341075

* @Date : 2018-8-23 下午9:13:21

* @Comments : 导入导出Excel工具类

* @Version : 1.0.0

*/

public class ExcelUtil {

/**

* @MethodName : listToExcel

* @Description : 导出Excel(可以导出到本地文件系统,也可以导出到浏览器,可自定义工作表大小)

* @param list 数据源

* @param fieldMap 类的英文属性和Excel中的中文列名的对应关系

* 如果需要的是引用对象的属性,则英文属性使用类似于EL表达式的格式

* 如:list中存放的都是student,student中又有college属性,而我们需要学院名称,则可以这样写

* fieldMap.put("college.collegeName","学院名称")

* @param sheetName 工作表的名称

* @param sheetSize 每个工作表中记录的最大个数

* @param out 导出流

* @throws ExcelException

*/

public static void listToExcel (

List list ,

LinkedHashMap fieldMap,

String sheetName,

int sheetSize,

OutputStream out

) throws ExcelException{

if(list.size()==0 || list==null){

throw new ExcelException("数据源中没有任何数据");

}

if(sheetSize>65535 || sheetSize<1){

sheetSize=65535;

}

//创建工作簿并发送到OutputStream指定的地方

WritableWorkbook wwb;

try {

wwb = Workbook.createWorkbook(out);

//因为2003的Excel一个工作表最多可以有65536条记录,除去列头剩下65535条

//所以如果记录太多,需要放到多个工作表中,其实就是个分页的过程

//1.计算一共有多少个工作表

double sheetNum=Math.ceil(list.size()/new Integer(sheetSize).doubleValue());

//2.创建相应的工作表,并向其中填充数据

for(int i=0; i

//如果只有一个工作表的情况

if(1==sheetNum){

WritableSheet sheet=wwb.createSheet(sheetName, i);

fillSheet(sheet, list, fieldMap, 0, list.size()-1);

//有多个工作表的情况

}else{

WritableSheet sheet=wwb.createSheet(sheetName+(i+1), i);

//获取开始索引和结束索引

int firstIndex=i*sheetSize;

int lastIndex=(i+1)*sheetSize-1>list.size()-1 ? list.size()-1 : (i+1)*sheetSize-1;

//填充工作表

fillSheet(sheet, list, fieldMap, firstIndex, lastIndex);

}

}

wwb.write();

wwb.close();

}catch (Exception e) {

e.printStackTrace();

//如果是ExcelException,则直接抛出

if(e instanceof ExcelException){

throw (ExcelException)e;

//否则将其它异常包装成ExcelException再抛出

}else{

throw new ExcelException("导出Excel失败");

}

}

}

/**

* @MethodName : listToExcel

* @Description : 导出Excel(可以导出到本地文件系统,也可以导出到浏览器,工作表大小为2003支持的最大值)

* @param list 数据源

* @param fieldMap 类的英文属性和Excel中的中文列名的对应关系

* @param out 导出流

* @throws ExcelException

*/

public static void listToExcel (

List list ,

LinkedHashMap fieldMap,

String sheetName,

相关文档
最新文档