Bean转Excel对象

  

 /*
* 文件名:BeanToExcel.java
*/ import java.util.ArrayList;
import java.util.List; import jxl.Sheet;
import jxl.write.WritableCell;
import jxl.write.WritableSheet;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException; /**
* TODO 添加类的一句话简单描述。
*/
public class BeanToExcel<T> { private WritableSheet wrightsheet;
private Sheet readSheet;
private List<T> beanList;
private Mapper<T> mapper;
private List<WritableCell> needChangeCells = new ArrayList<WritableCell>(); public BeanToExcel(WritableSheet sheet, List<T> beanList, Mapper<T> mapper){
this.wrightsheet = sheet;
this.beanList = beanList;
this.mapper = mapper;
} public BeanToExcel(Sheet sheet, Mapper<T> mapper){
this.readSheet = sheet;
this.mapper = mapper;
this.beanList = new ArrayList<T>();
} public void writeExcel() throws Exception{
try {
write();
} catch (RowsExceededException e) {
DEBUGGER.error("Failed to writeExcel", e);
throw e;
} catch (WriteException e) {
DEBUGGER.error("Failed to writeExcel", e);
throw e;
}
} public List<T> readBeans(){
for(int i=1; i<readSheet.getRows(); i++){
try {
T bean = mapper.toBean(readSheet.getRow(i));
if (bean instanceof ExcelInfo) {
((ExcelInfo) bean).setRow(i);
((ExcelInfo) bean).setReadSheet(readSheet);
}
if (bean != null){
beanList.add(bean);
}
} catch (ExcelException e) {
needChangeCells.addAll(e.getCellList());
}
}
return beanList;
} protected void write() throws RowsExceededException, WriteException{
for(int i = 0 ; i < beanList.size(); i++){
T bean = beanList.get(i);
List<WritableCell> line = mapper.toRow(i+1, bean);
for(WritableCell cell : line){
wrightsheet.addCell(cell);
}
}
} public List<WritableCell> getNeedChangeCells() {
return needChangeCells;
} }

  

  Excel.java

  

 /*
* 文件名:ExcelInfo.java
*/ import jxl.Sheet; /**
* ExcleInfo
*/
public class ExcelInfo
{ private int row; private Sheet readSheet; public int getRow()
{
return row;
} public void setRow(int row)
{
this.row = row;
} public Sheet getReadSheet()
{
return readSheet;
} public void setReadSheet(Sheet readSheet)
{
this.readSheet = readSheet;
}
}

  ExcelException.java

  

 /*
* 文件名:ExcelException.java
*/ import java.util.List; import jxl.write.WritableCell; /**
* TODO 添加类的一句话简单描述。
*/
public class ExcelException extends RuntimeException { private static final long serialVersionUID = -3113079946804687851L; public static ExcelException DEFAULT = new ExcelException("未知异常"); private String msg;
private List<WritableCell> cellList; public ExcelException(String msg) {
this.msg = msg;
} public ExcelException(String msg, List<WritableCell> cellList) {
this.msg = msg;
this.cellList = cellList;
} public ExcelException(String msg, StackTraceElement[] e, List<WritableCell> cellList) {
this.msg = msg;
this.cellList = cellList;
this.setStackTrace(e);
} @Override
public String getMessage() {
return this.msg;
} public List<WritableCell> getCellList() {
return cellList;
} }

  Mapper.java

  

 /*
* 文件名:Mapper.java
*/ import java.util.List; import jxl.Cell;
import jxl.format.Colour;
import jxl.write.Label;
import jxl.write.WritableCell;
import jxl.write.WritableCellFormat;
import jxl.write.WriteException; /**
* TODO 添加类的一句话简单描述。
*/
public abstract class Mapper<T> { public abstract List<WritableCell> toRow(int row,T t); public abstract T toBean(Cell[] rowCells) throws ExcelException; public WritableCell createCell(int column, int row, String content){
Label label = new Label(column, row, content);
return label;
} public WritableCell createErrorCell(int column, int row, String content){
Label label = new Label(column, row, content);
WritableCellFormat cellFormat = new WritableCellFormat();
try {
cellFormat.setBackground(Colour.YELLOW);
label.setCellFormat(cellFormat);
} catch (WriteException e) {
DEBUGGER.error("Failed to createErrorCell", e);
}
return label;
} }

  

JAVA 操作Excel工具类的更多相关文章

  1. java操作excel 工具类

    java操作excel 可参考https://blog.csdn.net/xunwei0303/article/details/53213130 直接上代码: 一.java生成excel文件: pac ...

  2. Java操作Excel工具类(poi)

    分享一个自己做的poi工具类,写不是很完全,足够我自己当前使用,有兴趣的可以自行扩展 1 import org.apache.commons.lang3.exception.ExceptionUtil ...

  3. 自己封装的poi操作Excel工具类

    自己封装的poi操作Excel工具类 在上一篇文章<使用poi读写Excel>中分享了一下poi操作Excel的简单示例,这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完 ...

  4. Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类

    Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...

  5. java 解析excel工具类

      java 解析excel工具类 CreateTime--2018年3月5日16:48:08 Author:Marydon ReadExcelUtils.java import java.io.Fi ...

  6. Java操作Redis工具类

    依赖 jar 包 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis< ...

  7. java里poi操作Excel工具类【我改】

    参考原文: https://www.cnblogs.com/yizhang/p/7244917.html 我改: package test; import java.io.File; import j ...

  8. Java解析Excel工具类(兼容xls和xlsx)

    依赖jar <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml&l ...

  9. java导出excel工具类

    java导出excel须要使用HSSFWorkbook这个类,须要导入poi-3.6-20091214.jar 工具类调用例如以下: package com.qlwb.business.util; i ...

随机推荐

  1. div固定顶部和底部

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. app手机端连接tomcat电脑端服务器

    1.你要在电脑端开启并启动tomcat 2.启动nginx,然后需要在nginx中配置好端口号,每一个app的模块端口号是不一样的,需要你进行更改 3.如下图代表app连接的端口: 4.关于sql过滤 ...

  3. windows下使用python的scrapy爬虫框架,爬取个人博客文章内容信息

    scrapy作为流行的python爬虫框架,简单易用,这里简单介绍如何使用该爬虫框架爬取个人博客信息.关于python的安装和scrapy的安装配置请读者自行查阅相关资料,或者也可以关注我后续的内容. ...

  4. ubuntu16.04 tensorflow pip 方式安装

    首先,需要知道   tensorflow  1.5版本以上包括 1.5版本  的GPU类型都是需要安装  cuda9.0的,  tensorflow-gpu  1.4版本是可以使用cuda 8.0. ...

  5. CF1082D:Maximum Diameter Graph (简单构造)

    Graph constructive problems are back! This time the graph you are asked to build should match the fo ...

  6. # 20155327 2016-2017-4 《Java程序设计》第8周学习总结

    20155327 2016-2017-4 <Java程序设计>第7周学习总结 教材学习内容总结 了解NIO NIO使用频道(Channel)来衔接数据节点,在处理数据时,NIO可以让你设定 ...

  7. TypeScript学习笔记(三) - 方法

    本篇将介绍在TypeScript里如何定义和使用方法. 一.方法标准声明和使用 // 方法声明 function func(x: number, y: number): number { return ...

  8. cratedb nodejs 试用

    安装cratedb docker run -d -p 4200:4200 crate nodejs 项目初始化 yarn yarn init -y 添加依赖 yarn add node-crate 基 ...

  9. Telnet远程重启路由器TP-LINK

    突然断网,以前房东的路由器管理页面可以打开,今天突然间就打不开了.ping了下,可以ping通,于是就想起了房东的路由器是TP-LINK的 可以 telnet登陆的.每次,断网,我都会重启房东的路由器 ...

  10. mysql 源代码目录及安装目录介绍

    1.源代码目录介绍: 1.BUILD    BUILD目录是编译.安装脚本目录,绝大部分以compile-开头,其中的SETUP.sh脚本为C和C++编译器设置了优化选项.2.client    cl ...