package cn.com.flaginfo.biz.excel;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.logging.Logger;
import java.util.regex.Pattern;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.LoggerFactory;
import com.alibaba.fastjson.JSON;
import cn.com.flaginfo.biz.excel.annotation.entity.ImportTableParams;
import cn.com.flaginfo.biz.excel.annotation.entity.TableParams;
import cn.com.flaginfo.biz.excel.annotation.exception.ExcelException;
import cn.com.flaginfo.biz.excel.annotation.util.ExcelField;
import cn.com.flaginfo.biz.excel.annotation.util.ExcelImportField;
import cn.com.flaginfo.biz.excel.annotation.validate.Alias;
import cn.com.flaginfo.biz.excel.annotation.validate.AliasItem;
import cn.com.flaginfo.biz.excel.annotation.validate.CustomValidate;
import cn.com.flaginfo.biz.excel.annotation.validate.Email;
import cn.com.flaginfo.biz.excel.annotation.validate.IdCard;
import cn.com.flaginfo.biz.excel.annotation.validate.IsChinese;
import cn.com.flaginfo.biz.excel.annotation.validate.IsNum;
import cn.com.flaginfo.biz.excel.annotation.validate.IsUrl;
import cn.com.flaginfo.biz.excel.annotation.validate.Max;
import cn.com.flaginfo.biz.excel.annotation.validate.Min;
import cn.com.flaginfo.biz.excel.annotation.validate.NotNull;
import cn.com.flaginfo.biz.excel.annotation.validate.Phone;
import cn.com.flaginfo.biz.excel.annotation.validate.Range;
import cn.com.flaginfo.biz.excel.annotation.validate.Telephone;
/**
* EXCEL操作工具类
* @author huangjinhui
*
*/
@SuppressWarnings("resource")
public class FlagInfoExcelUtils{
private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(FlagInfoExcelUtils.class);
/*标题*/
private String title;
/*标题行高*/
private Integer titleRow;
/*当前行的下标*/
private int currRowIndex;
/*开始读取的行数*/
private int startLine;
/*结束行数*/
private int endLine;
/*当前列的下标*/
private int curCollIndex;
private Sheet sheet;
/*当前列*/
private Cell curCell;
/*当前工作簿下标*/
private int currSheetIndex;
/*当前行*/
private Row curRow;
public Workbook wb;
/*标题所在的行*/
private Integer titleLine;
@SuppressWarnings("rawtypes")
private static UploadDataResultDto uploadDataResultDto;
/*获取实例*/
@SuppressWarnings("rawtypes")
public static FlagInfoExcelUtils getInstance(){
uploadDataResultDto = new UploadDataResultDto();
return new FlagInfoExcelUtils();
}
//==========================<<<<<EXCEL 导出 START>>>>>=======================
/**
* 不带标题的导出
* @param clz 导出对象的class
* @param list 导出集合
* @param isXssf 是否是xlsx
* @param sheetName工作簿名称
* @return
* @throws ExcelException
*/
@Deprecated
public Workbook exportByObj(Class clz, List list, boolean isXssf,String sheetName) throws ExcelException {
return this.exportByObj(clz, list, isXssf,null,null,sheetName);
}
/**
* 带标题的导出
* @param clz 导出对象的class
* @param list 导出集合
* @param isXssf 是否是xlsx
* @param title 标题
* @param titleRow 标题行高
* @param sheetName工作簿名称
* @return
* @throws ExcelException
*/
public Workbook exportByObj( Class clz, List list, boolean isXssf,TableParams tableparams) throws ExcelException {
return this.exportByObj(clz,list,isXssf,tableparams.getTitle(),tableparams.getTitleHeight(),tableparams.getSheetName());
}
@Deprecated
@SuppressWarnings("rawtypes")
public Workbook exportByObj( Class clz, List list, boolean isXssf,String title,Integer titleRow,String sheetName) throws ExcelException {
//判断是创建 xlsx 或者 xls
if(isXssf){
/*xlsx*/
wb = new XSSFWorkbook();
}else{
/*xls*/
wb = new HSSFWorkbook();
}
CellStyle cellStyle = wb.createCellStyle();
Font font = wb.createFont();
/*创建工作簿*/
Sheet sheet = wb.createSheet(sheetName);
sheet.autoSizeColumn(1);
//sheet.setColumnWidth(columnIndex, width);
/*处理标题 设置标题高度*/
if(!StringUtils.isEmpty(title)&& titleRow != null){
this.titleRow = titleRow;
this.title = title;
}
/*通过注解,对导出对象的标题,属性,排序进行设置*/
List<ExcelHeader> headers = getExcelHeaders(clz);
/*设置标题*/
setTitle(title,titleRow,sheet,headers,cellStyle,font);
/*设置导航标题*/
setHeader(sheet, headers);
List<CellStyle> cellStyles = null;
/*创建每一列的样式*/
if(!CollectionUtils.isEmpty(headers)){
cellStyles = getStyles(font, headers);
}
Row row;
if(list != null && list.size() >0){
for(int i = 0 ;i < list.size();i++){
row =sheet.createRow(i+currRowIndex);
/*开始给每一列进行赋值*/
for(int j = 0; j < headers.size(); j++){
String methodStr = getMethod(headers.get(j));
try {
Method method = clz.getMethod(methodStr,null);
Object value = method.invoke(list.get(i), null);
if (value != null){
Cell createCell = row.createCell(j);
//判断是否要加样式
if (cellStyles != null && !CollectionUtils.isEmpty(cellStyles) && cellStyles.get(j) != null){
createCell.setCellStyle(cellStyles.get(j));
}
createCell.setCellValue(value.toString());
}else{
}
} catch (Exception e) {
LOGGER.error("export Excel by Obj ====>>>> Exception:{}",e);
throw new ExcelException(e);
}
}
}
}
return wb;
}
private List<CellStyle> getStyles(Object o, List<ExcelHeader> headers) {
List<CellStyle> cellStyles = new ArrayList<CellStyle>();
for (ExcelHeader header : headers){
CellStyle style = wb.createCellStyle();
//设置样式
//字体颜色
Font font1 = wb.createFont();
font1.setFontName("仿宋_GB2312");
font1.setColor(header.getColor());
style.setFont(font1);//选择需要用到的字体格式
//align
style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
if("left".equals(header.getAlign())){
style.setAlignment(CellStyle.ALIGN_LEFT); //
}else if("center".equals(header.getAlign())){
style.setAlignment(CellStyle.ALIGN_CENTER); // 居中
}else if("right".equals(header.getAlign())){
style.setAlignment(CellStyle.ALIGN_RIGHT); //
}
cellStyles.add(style);
}
return cellStyles;
}
/**
* 根据属性名获取get方法名称
* @param header
* @return
*/
private String getMethod(ExcelHeader header) {
String fieldName =header.getFieldName();
fieldName = "get"+fieldName.substring(0, 1).toUpperCase()+fieldName.substring(1);
return fieldName;
}
private void setHeader(Sheet sheet, List<ExcelHeader> headers
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
excel工具类.zip (68个子文件)
excel工具类
flaginfo-excel-api
.project 984B
pom.xml 3KB
target
excel-api-0.0.1-SNAPSHOT.jar 27KB
test-classes
maven-archiver
pom.properties 133B
excel-api-0.0.1-SNAPSHOT-sources.jar 25KB
maven-status
maven-compiler-plugin
compile
default-compile
createdFiles.lst 1KB
inputFiles.lst 3KB
testCompile
default-testCompile
inputFiles.lst 0B
generated-sources
annotations
classes
cn
com
flaginfo
biz
excel
UploadDataResultDto.class 2KB
ExcelHeader.class 2KB
test
annotation
exception
ExcelException.class 1008B
entity
TableParams.class 1KB
ImportTableParams.class 1KB
validate
AliasItem.class 513B
Max.class 531B
IsNum.class 521B
NotNull.class 525B
IsUrl.class 521B
Phone.class 521B
Alias.class 528B
Min.class 531B
IsChinese.class 529B
CustomValidate.class 523B
Email.class 521B
IdCard.class 523B
Telephone.class 529B
Range.class 555B
util
ExcelField.class 653B
ExcelImportField.class 522B
FlagInfoExcelUtils.class 26KB
exception
ExcelException.class 986B
model
META-INF
maven
cn.com.flaginfo.biz.utils
excel-api
pom.xml 3KB
pom.properties 267B
MANIFEST.MF 104B
application.properties 0B
.settings
org.eclipse.core.resources.prefs 155B
org.eclipse.jdt.core.prefs 243B
org.eclipse.wst.common.project.facet.core.xml 145B
org.eclipse.m2e.core.prefs 97B
src
test
java
main
resources
application.properties 0B
java
cn
com
flaginfo
biz
excel
test
Test.java 2KB
annotation
exception
ExcelException.java 571B
entity
TableParams.java 843B
ImportTableParams.java 2KB
validate
Email.java 514B
Phone.java 461B
Min.java 510B
IsUrl.java 496B
IdCard.java 461B
Max.java 508B
Alias.java 501B
AliasItem.java 639B
Range.java 564B
NotNull.java 499B
IsNum.java 497B
IsChinese.java 507B
Telephone.java 458B
CustomValidate.java 568B
util
ExcelField.java 1KB
ExcelImportField.java 631B
exception
ExcelException.java 560B
ExcelHeader.java 2KB
FlagInfoExcelUtils.java 33KB
model
ExamQuestionExcel.java 932B
ExamUserExcel.java 892B
UploadDataResultDto.java 923B
.springBeans 417B
.classpath 1KB
共 68 条
- 1
资源评论
普通网友
- 粉丝: 16
- 资源: 41
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 5G SRM815模组原理框图.jpg
- T型3电平逆变器,lcl滤波器滤波器参数计算,半导体损耗计算,逆变电感参数设计损耗计算 mathcad格式输出,方便修改 同时支持plecs损耗仿真,基于plecs的闭环仿真,电压外环,电流内环
- 毒舌(解锁版).apk
- 显示HEX、S19、Bin、VBF等其他汽车制造商特定的文件格式
- 操作系统实验 Ucore lab5
- 8bit逐次逼近型SAR ADC电路设计成品 入门时期的第三款sarADC,适合新手学习等 包括电路文件和详细设计文档 smic0.18工艺,单端结构,3.3V供电 整体采样率500k,可实现基
- 操作系统实验 ucorelab4内核线程管理
- 脉冲注入法,持续注入,启动低速运行过程中注入,电感法,ipd,力矩保持,无霍尔无感方案,媲美有霍尔效果 bldc控制器方案,无刷电机 提供源码,原理图
- Matlab Simulink#直驱永磁风电机组并网仿真模型 基于永磁直驱式风机并网仿真模型 采用背靠背双PWM变流器,先整流,再逆变 不仅实现电机侧的有功、无功功率的解耦控制和转速调节,而且能实
- 157389节奏盒子地狱模式第三阶段7.apk
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功