热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

POIExcel导出合并单元格

****paramdataList数据*paramheadNameMap标题*paramtype类型1xls2xlsx*parammergeIndex需要合并的列从1开始0是序号*

/*** * @param dataList 数据* @param headNameMap 标题* @param type 类型 1 xls 2 xlsx* @param mergeIndex 需要合并的列 从1开始 0是序号* @param col 以哪一列为准进行合并* @return* @throws Exception*/public static byte[] toExcel(List dataList, Map headNameMap, int type,int[] mergeIndex,int col) throws Exception {Workbook workbook;if (type == 1) {workbook = new XSSFWorkbook();} else if (type == 2) {workbook = new SXSSFWorkbook();} else {workbook = new HSSFWorkbook();}List methodList = null;Sheet sheet = workbook.createSheet("数据列表");int index = sheet.getPhysicalNumberOfRows();for (int i = 0; i ();Row rowHead = sheet.createRow(index);Iterator> iterator = headNameMap.entrySet().iterator();int c = 0;while (iterator.hasNext()) {Map.Entry entry = iterator.next();for (int m = 0; m 0&&strEndIndex>0){strEndIndex =strEndIndex-1;if(strBeginIndex!=strEndIndex){//首行合并CellRangeAddress region = new CellRangeAddress(strBeginIndex, strEndIndex, mergeIndex[i], mergeIndex[i]);sheet.addMergedRegion(region);}strBeginIndex=0;start=1;}else if (strBeginIndex>0&&strEndIndex>0){//中间行合并strEndIndex =strEndIndex-1;if(strBeginIndex!=strEndIndex){CellRangeAddress region = new CellRangeAddress(strBeginIndex, strEndIndex, mergeIndex[i], mergeIndex[i]);sheet.addMergedRegion(region);}strBeginIndex=0;}str=row.getCell(col).getStringCellValue();}j++;}}ByteArrayOutputStream baos = new ByteArrayOutputStream();workbook.write(baos);workbook.close();System.out.println("export finish!");return baos.toByteArray();}

private static Object getValue(Object value) {Object textValue = "";if (value != null) {if (value instanceof Boolean) {textValue = (Boolean) value ? "是" : "否";} else if (value instanceof Date) {textValue = DateUtils.format((Date) value, "yyyy-MM-dd HH:mm:ss");} else if (value instanceof String) {String val = (String) value;textValue = StringUtil.isEmpty(val) || "null".equalsIgnoreCase(val) ? "" : val;} else {textValue = value;}}return textValue;}

private static void setCellValue(Cell cell, Object value) {if (value != null) {if (value instanceof Integer) {cell.setCellValue((Integer) value);} else if (value instanceof Boolean) {Boolean booleanValue = (Boolean) value;cell.setCellValue(booleanValue);} else if (value instanceof Date) {Date dateValue = (Date) value;cell.setCellValue(dateValue);} else if (value instanceof Float) {Float floatValue = (Float) value;cell.setCellValue(floatValue);} else if (value instanceof Double) {Double doubleValue = (Double) value;cell.setCellValue(doubleValue);} else if (value instanceof Long) {Long longValue = (Long) value;cell.setCellValue(longValue);} else {cell.setCellValue(value.toString());}}}

test:

public static void main(String[] args) throws Exception {List list&#61;new ArrayList<>();Model model0&#61;new Model("2201812011052199002","中国南通16","富氢水杯",new BigDecimal("0.00"),new BigDecimal("2"));list.add(model0);Model model1&#61;new Model("220181201105219900","中国南通1","果蔬肉类智能生态仪",null,new BigDecimal("20"));list.add(model1);Model model2&#61;new Model("220181201105219900","中国南通1","果蔬肉类智能生态仪",new BigDecimal("100"),new BigDecimal("200"));list.add(model2);Model model3&#61;new Model("2201812011107273028","中国浙江18","量子眼镜",new BigDecimal("3"),new BigDecimal("4"));list.add(model3);Model model4&#61;new Model("2201812011107273028","中国浙江18","汽车负氧离子氧吧",new BigDecimal("5"),new BigDecimal("2"));list.add(model4);Model model5&#61;new Model("2201812011107563899","中国浙江19","天下美抗菌套盒",new BigDecimal("1"),new BigDecimal("7"));list.add(model5);Model model6&#61;new Model("2201812011108176372","中国浙江20","参元颗粒(0.8g*30瓶)",new BigDecimal("8"),new BigDecimal("3"));list.add(model6);Model model7&#61;new Model("2201812011107563899","中国浙江21","米饭脱糖仪",new BigDecimal("4"),new BigDecimal("6"));list.add(model7);Model model8&#61;new Model("2201812011107563899","中国浙江21","米饭脱糖1仪",new BigDecimal("4"),new BigDecimal("6"));list.add(model8);Model model&#61;new Model();Map map&#61;getFieldAnnotation(model);byte[] bytes &#61; toExcel(list, map, 1,new int[]{0,1},0);File file&#61;new File("D:\\demo1.xls");if(file.exists()){file.delete();}FileOutputStream fos &#61; new FileOutputStream(file);fos.write(bytes,0,bytes.length);fos.flush();fos.close();}

Model:

package com.eg.cdt.saas.operator.common.model;import lombok.Data;import java.io.Serializable;
import java.math.BigDecimal;
import com.alibaba.excel.annotation.ExcelProperty;&#64;Data
public class Model implements Serializable {&#64;ExcelProperty(value &#61; {"订单号"},index &#61; 1)private String orderNo;&#64;ExcelProperty(value &#61; {"厂家"},index &#61; 2)private String changJia;&#64;ExcelProperty(value &#61; {"商品"},index &#61; 3)private String goods;&#64;ExcelProperty(value &#61; {"价格1"},index &#61; 4)private BigDecimal price1;&#64;ExcelProperty(value &#61; {"价格2"},index &#61; 5)private BigDecimal price2;public Model() {}public Model(String orderNo, String changJia, String goods, BigDecimal price1, BigDecimal price2) {this.orderNo &#61; orderNo;this.changJia &#61; changJia;this.goods &#61; goods;this.price1 &#61; price1;this.price2 &#61; price2;}
}

public static Map getFieldAnnotation(Object object) {Field[] fields &#61; object.getClass().getDeclaredFields();Map resultMap &#61; new LinkedHashMap();List fieldList &#61; Arrays.stream(fields).filter(field -> {ExcelProperty annotation &#61; field.getAnnotation(ExcelProperty.class);if (annotation !&#61; null && annotation.index() > 0) {field.setAccessible(true);return true;}return false;}).sorted(Comparator.comparing(field -> {int index &#61; 0;ExcelProperty annotation &#61; field.getAnnotation(ExcelProperty.class);if (annotation !&#61; null) {index &#61; annotation.index();}return index;})).collect(Collectors.toList());fieldList.forEach(e->{resultMap.put(e.getName(), e.getAnnotation(ExcelProperty.class).value()[0]);});return resultMap;}


推荐阅读
  • 本文深入探讨了NDK与JNI技术在实际项目中的应用及其学习路径。通过分析工程目录结构和关键代码示例,详细介绍了如何在Android开发中高效利用NDK和JNI,实现高性能计算和跨平台功能。同时,文章还提供了从基础概念到高级实践的系统学习指南,帮助开发者快速掌握这些关键技术。 ... [详细]
  • 本文介绍了Android动画的基本概念及其主要类型。Android动画主要包括三种形式:视图动画(也称为补间动画或Tween动画),主要通过改变视图的属性来实现动态效果;帧动画,通过顺序播放一系列预定义的图像来模拟动画效果;以及属性动画,通过对对象的属性进行平滑过渡来创建更加复杂的动画效果。每种类型的动画都有其独特的应用场景和实现方式,开发者可以根据具体需求选择合适的动画类型。 ... [详细]
  • 本项目在Java Maven框架下,利用POI库实现了Excel数据的高效导入与导出功能。通过优化数据处理流程,提升了数据操作的性能和稳定性。项目已发布至GitHub,当前最新版本为0.0.5。该项目不仅适用于小型应用,也可扩展用于大型企业级系统,提供了灵活的数据管理解决方案。GitHub地址:https://github.com/83945105/holygrail,Maven坐标:`com.github.83945105:holygrail:0.0.5`。 ... [详细]
  • 使用 XlsxWriter 模块在 Python 中实现 Excel 单元格内多种格式文本的高效写入
    XlsxWriter 是一个强大的 Python 库,专门用于生成 `.xlsx` 格式的 Excel 文件。该模块不仅支持基本的数据写入,还提供了丰富的格式化选项,能够实现单元格内多种文本样式的高效处理。无论是字体、颜色、对齐方式还是边框,XlsxWriter 都能轻松应对,满足用户在 Excel 视图中的各种需求。 ... [详细]
  • 在C#和ASP.NET开发中,TypeParse 是一个非常实用的类型解析扩展方法库,提供了简便的类型转换功能。例如,通过 `var int1 = "12".TryToInt();` 可以将字符串安全地转换为整数,如果转换失败则返回0。此外,还支持更多复杂的类型转换场景,如 `var int2 = "22x".TryToInt();` 和 `var int3 = "3.14".TryToInt();`,确保了代码的健壮性和易用性。 ... [详细]
  • 深入解析 Django 中用户模型的自定义方法与技巧 ... [详细]
  • 开发心得:深入探讨Servlet、Dubbo与MyBatis中的责任链模式应用
    开发心得:深入探讨Servlet、Dubbo与MyBatis中的责任链模式应用 ... [详细]
  • 深入解析JWT的实现与应用
    本文深入探讨了JSON Web Token (JWT) 的实现机制及其应用场景。JWT 是一种基于 RFC 7519 标准的开放性认证协议,用于在各方之间安全地传输信息。文章详细分析了 JWT 的结构、生成和验证过程,并讨论了其在现代 Web 应用中的实际应用案例,为开发者提供了全面的理解和实践指导。 ... [详细]
  • 本文将详细介绍在Android应用中添加自定义返回按钮的方法,帮助开发者更好地理解和实现这一功能。通过具体的代码示例和步骤说明,本文旨在为初学者提供清晰的指导,确保他们在开发过程中能够顺利集成返回按钮,提升用户体验。 ... [详细]
  • Android 图像色彩处理技术详解
    本文详细探讨了 Android 平台上的图像色彩处理技术,重点介绍了如何通过模仿美图秀秀的交互方式,利用 SeekBar 实现对图片颜色的精细调整。文章展示了具体的布局设计和代码实现,帮助开发者更好地理解和应用图像处理技术。 ... [详细]
  • MongoDB Aggregates.group() 方法详解与编程实例 ... [详细]
  • 技术日志:深入探讨Spark Streaming与Spark SQL的融合应用
    技术日志:深入探讨Spark Streaming与Spark SQL的融合应用 ... [详细]
  • 在探讨 AS3 中的数据深度复制技术时,本文详细介绍了实现数据深度克隆的有效方法。通过对比多种方案,最终确定了一种高效且可靠的实现方式,所有代码均来源于公开资源,确保了方法的实用性和可操作性。 ... [详细]
  • 深入学习 Python 中的 xlrd 模块:掌握 Excel 文件读取技巧
    本文深入探讨了 Python 中的 xlrd 模块,重点介绍了如何高效读取 Excel 文件(包括 xlsx 和 xls 格式)。同时,文章还详细讲解了 xlwt 模块在 Excel 文件写操作中的应用。此外,文中列举了常见单元格数据类型及其处理方法,为读者提供了全面的实践指导。 ... [详细]
  • 本文介绍了如何通过掌握 IScroll 技巧来实现流畅的上拉加载和下拉刷新功能。首先,需要按正确的顺序引入相关文件:1. Zepto;2. iScroll.js;3. scroll-probe.js。此外,还提供了完整的代码示例,可在 GitHub 仓库中查看。通过这些步骤,开发者可以轻松实现高效、流畅的滚动效果,提升用户体验。 ... [详细]
author-avatar
莪乜子12
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有