通过模板生成Excel表格——XLSTransformer

通过模板生成Excel表格——XLSTransformer/***根据模版生成保存到指定位置*@parampathTemplateFileName*@paramlist*@parampathResultFileName*@return*/publicstaticbooleancreateExcel(StringpathTemplateFileNam…

大家好,又见面了,我是你们的朋友全栈君。

依赖:

		<dependency>
            <groupId>net.sf.jxls</groupId>
            <artifactId>jxls-core</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>net.sf.jxls</groupId>
            <artifactId>jxls-reader</artifactId>
            <version>1.0</version>
        </dependency>
	/** * 根据模版生成保存到指定位置 * @param pathTemplateFileName 模版路径 * @param list * @param pathResultFileName 存放路径 * @return */
public static boolean createExcel(String pathTemplateFileName, List<?> list, String pathResultFileName){ 

//创建XLSTransformer对象
XLSTransformer transformer = new XLSTransformer();
//获取java项目编译后根路径
//URL url = ExcelUtil.class.getClassLoader().getResource("");
//得到模板文件路径
//String srcFilePath = url.getPath() + templateFileName;
//String destFilePath = url.getPath() + resultFileName;
Map<String,Object> beanParams = new HashMap<String,Object>();
beanParams.put("list", list);
try { 

//生成Excel文件
transformer.transformXLS(pathTemplateFileName, beanParams,pathResultFileName );
return true;
} catch (Exception e) { 

e.printStackTrace();
return false;
}
}
/** * 根据模版生成 excel的工作簿 * @param pathTemplateFileName * @param list * @return */
public static Workbook createHSSFWorkbook(String pathTemplateFileName, List<?> list){ 

//创建XLSTransformer对象
XLSTransformer transformer = new XLSTransformer();
Map<String,Object> beanParams = new HashMap<String,Object>();
beanParams.put("list", list);
Workbook hssfWorkbook=null;
try { 

InputStream is = new BufferedInputStream(new FileInputStream(pathTemplateFileName));
hssfWorkbook = transformer.transformXLS(is, beanParams);
is. close();
} catch (Exception e) { 

e.printStackTrace();
}
return hssfWorkbook;
}
/** * 写到输入流中 * @param pathTemplateFileName * @param list */
public static InputStream getExceInput(String pathTemplateFileName, List<?> list) throws Exception { 

XLSTransformer transformer = new XLSTransformer();
Map<String,Object> beanParams = new HashMap<String,Object>();
beanParams.put("dateFormat",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
beanParams.put("list", list);
InputStream inputStream = new BufferedInputStream(new FileInputStream(pathTemplateFileName));
transformer.transformXLS(inputStream, beanParams);
return inputStream;
}
public static boolean setExceOutput(String pathTemplateFileName, List<?> list,OutputStream outputStream){ 

XLSTransformer transformer = new XLSTransformer();
Map<String,Object> beanParams = new HashMap<String,Object>();
InputStream is=null;
try { 

beanParams.put("list", list);
is = new BufferedInputStream(new FileInputStream(pathTemplateFileName));
Workbook wb = transformer.transformXLS(is, beanParams);
wb.write(outputStream);
return true;
}catch (ParsePropertyException ex){ 

ex.printStackTrace();
}catch (InvalidFormatException ex){ 

ex.printStackTrace();
}catch (IOException ex){ 

ex.printStackTrace();
} finally { 

if (is!=null){ 

try { 

is.close();
} catch (IOException e) { 

e.printStackTrace();
}
}
}
return false;
}
/** * 装配 返回数据流水 * @param pathTemplateFileName * @param list * @return */
public static   byte[] getExceByte(String pathTemplateFileName, List<?> list){ 

//创建XLSTransformer对象
XLSTransformer transformer = new XLSTransformer();
Map<String,Object> beanParams = new HashMap<String,Object>();
beanParams.put("list", list);
byte[] bytes=null;
InputStream is=null;
ByteArrayOutputStream out=null;
try { 

is = new BufferedInputStream(new FileInputStream(pathTemplateFileName));
Workbook wb = transformer.transformXLS(is, beanParams);
out = new ByteArrayOutputStream();
wb.write(out);
bytes = out.toByteArray();
} catch (Exception e) { 

e.printStackTrace();
}finally { 

try { 

if (is!=null) { 

is.close();
}
} catch (IOException e) { 

e.printStackTrace();
}
try { 

if (out!=null) { 

out.close();
}
} catch (IOException e) { 

e.printStackTrace();
}
}
return bytes;
}
/** *根据工作博导出集合对象 * @param wb * @param sheetAt 解析那个sheet页 * @param statIndex 那一行开始 * @param tClass 解析目标对象 * @param <T> * @return * @throws IllegalAccessException * @throws InstantiationException */
public static <T> List<T> getList(Workbook wb,int sheetAt,int statIndex,Class<T> tClass ) throws IllegalAccessException, InstantiationException { 

List<T> list=new ArrayList<>();
Sheet sheet = wb.getSheetAt(sheetAt);
int lastRowNum = sheet.getLastRowNum();
for (int i=statIndex;i<=lastRowNum;i++){ 

Row row = sheet.getRow(i);
if(row==null){ 

continue;
}
T t= tClass.newInstance();
Field[] declaredFields = tClass.getDeclaredFields();
for (Field f : declaredFields) { 

f.setAccessible(true); //设置些属性是可以访问的
//Object val = f.get(t);//得到此属性的值
//String name = f.getName();//获得属性名
ExcelIndex annotation = f.getAnnotation(ExcelIndex.class);
if (annotation==null){ 

continue;
}
Cell cell = row.getCell(annotation.value());
f.set(t,getFCellValue(cell));
}
list.add(t);
}
return list;
}
/** * 获取单元格的值 * @param cell * @return */
private static   Object getFCellValue(Cell cell){ 

if(cell==null){ 

return null;
}
switch (cell.getCellType()) { 

case 0: // 数字
return cell.getNumericCellValue();
case 1: // 字符串
return cell.getStringCellValue();
case 4: // Boolean
return cell.getBooleanCellValue();
case 2: // 公式
return    cell.getCellFormula();
case 3: // 空值
return null;
case 5: // 故障
return null;
default://未知
return null;
}
}
public static void main(String[] args) throws Throwable { 

createExcel("D:/555.xlsx",new ArrayList<>(),"D:/test.xlsx");
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/163867.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • BIRCH详解_Bilabial

    BIRCH详解_BilabialBIRCH(BalancedIterativeReducingandClusteringusingHierarchies)详解第三十次写博客,本人数学基础不是太好,如果有幸能得到读者指正,感激不尽,希望能借此机会向大家学习。这一篇作为可伸缩聚类(ScalableClustering)算法的第三篇,主要是对BIRCH(BalancedIterativeReducingand…

    2022年10月31日
  • 基于CCXT接口建立的多模块数字货币量化交易模型(MMQT)在python中的实现[通俗易懂]

    基于CCXT接口建立的多模块数字货币量化交易模型(MMQT)在python中的实现[通俗易懂]目录一、前言问题的引出MMQT模型的优势二、MMQT简介1.接口模块2.风控模块3.策略模块4.反馈模块三、MMQT的代码实现1.定义中间模块(类)1.初始化2.获取账户信息、交易对信息、订单信息3.数据更新4.创建订单5.获取订单状态6.撤销订单7.获取k线信息2.定义风控模块(类)3.定义策略模块(类)1.策略模块初始化2.技术分析及交易下单3.反馈模块4.相关类实例化1.ccxt实例化2.中间类、风控类、策略类实例化3.调控程序四、回测的代码实现1.获取数据2.数据清洗3.模拟账户初始化4.回测程序五

  • 小强(为什么叫打不死的小强)

    作为科研人员,经常需要下载文献。sci-hub大家应该都比较熟悉,我就不过多介绍了!自从11月20号,小伙伴们陆续反馈sci-hub无法访问了11月21日,sci-hub官方发布,通过修改dns为80.82.77.83和80.82.77.84可以访问sci-hub.cc(ac)不多说

  • js跨域请求的三种方法_jQuery

    js跨域请求的三种方法_jQueryJavaScriptjQuery:Ajax、跨域。

    2022年10月30日
  • LeetCode OJ:Basic Calculator(基础计算器)

    LeetCode OJ:Basic Calculator(基础计算器)

  • dm268_实时的意思

    dm268_实时的意思最近正好又用到DM368开发板,就将之前做的编解码的项目总结一下。话说一年多没碰,之前做的笔记全忘记是个什么鬼了。还好整理了一下出图像了。不过再看看做的这个东西,真是够渣的,只能作为参考了。项目效果就是,编码encode然后通过rtsp传输在VLC上实时播放。用的是sensor是 MT9P031。一、内核配置让其支持MT9P031二、硬件设计错误排查启动信息错误,无法检测到MT9

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号