java List集合转Excel表格文档

2023-11-14

前阵子有朋友问我java将excel转成文档的方法(用此方法需要引入jxl包),而最近公司刚好有个需求需要将数据转成excel文档。所以我就写了一个工具类,将数据对象转成excel文档。考虑到可能要传入不同类型的对象集合。为了能配合我那个朋友使用,也为了工具类更具有复用性,excel的第一行信息通过反射获取对象的属性名称来写入。

首先要做一个 通过字段名称获取属性值 的方法:

/**
     * 获取属性值
     * @param fieldName 字段名称
     * @param o 对象
     * @return  Object
     */
   private static Object getFieldValueByName(String fieldName, Object o) {
       try {
           String firstLetter = fieldName.substring(0, 1).toUpperCase();    
           String getter = "get" + firstLetter + fieldName.substring(1);    //获取方法名
           Method method = o.getClass().getMethod(getter, new Class[] {});  //获取方法对象
           Object value = method.invoke(o, new Object[] {});    //用invoke调用此对象的get字段方法
               return value;  //返回值
       } catch (Exception e) {
           e.printStackTrace();
           return null;    
       }    
   }

接下来我们要写一个将list集合转成excel文件的方法

/**
     * 将list集合转成Excel文件
     * @param list  对象集合
     * @param path  输出路径
     * @return   返回文件路径
     */
    public static String createExcel(List<? extends Object> list,String path){
        String result = "";
        if(list.size()==0||list==null){
            result = "没有对象信息";
        }else{
            Object o = list.get(0);
            Class<? extends Object> clazz = o.getClass();
            String className = clazz.getSimpleName();
            Field[] fields=clazz.getDeclaredFields();    //这里通过反射获取字段数组
            File folder = new File(path);
            if(!folder.exists()){
                folder.mkdirs();
            }
            String fileName = FORMATTER.format(new Date());
            String name = fileName.concat(".xls");
            WritableWorkbook book = null;
            File file = null;
            try {
                file = new File(path.concat(File.separator).concat(name));
                book = Workbook.createWorkbook(file);  //创建xls文件
                WritableSheet sheet  =  book.createSheet(className,0);
                int i = 0;  //列
                int j = 0;  //行
                for(Field f:fields){
                    j = 0;
                    Label label = new Label(i, j,f.getName());   //这里把字段名称写入excel第一行中
                    sheet.addCell(label);
                    j = 1;
                    for(Object obj:list){
                        Object temp = getFieldValueByName(f.getName(),obj);
                        String strTemp = "";
                        if(temp!=null){
                            strTemp = temp.toString();
                        }
                        sheet.addCell(new Label(i,j,strTemp));  //把每个对象此字段的属性写入这一列excel中
                        j++;
                    }
                    i++;
                }
                book.write();
                result = file.getPath();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                result = "SystemException";
                e.printStackTrace();
            }finally{
                fileName = null;
                name = null;
                folder = null;
                file = null;
                if(book!=null){
                    try {
                        book.close();
                    } catch (WriteException e) {
                        // TODO Auto-generated catch block
                        result = "WriteException";
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        result = "IOException";
                        e.printStackTrace();
                    }
                }
            }

        }

        return result;   
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java List集合转Excel表格文档 的相关文章

随机推荐

  • 《代码走查》杂记

    代码走查 一 定义 1 代码走查 code walkthrough 是一个开发人员与架构师集中与讨论代码的过程 代码走查的目的交换有关代码是如何书写的思路 并建立一个对代码的标准集体阐述 在代码走查的过程中 开发人员都应该有机会向其他人来阐
  • OpenGL: 视图矩阵的推导

    OpenGL 视图矩阵的推导 2014年03月04日 11 08 45 阅读数 6525 把物体从世界坐标系转化到视点坐标系的矩阵称为视图矩阵 下面我们先看下opengl视图矩阵的推导过程 假设视点或camera的局部坐标系为UVN UVN
  • webpack中的代码分离

    Tip 本指南继续沿用 起步 中的示例代码 请确保你已熟悉这些指南中提供的示例以及输出管理章节 代码分离是 webpack 中最引人注目的特性之一 此特性能够把代码分离到不同的 bundle 中 然后可以按需加载或并行加载这些文件 代码分离
  • Python 九九乘法表的7种实现方式

    Python 九九乘法表的7种实现方式 九九乘法表是初学者学习编程的必要练手题目之一 因此各种语言都有对应的实现方式 而 Python 也不例外 在 Python 中 我们可以使用多种方式来生成一个简单的九九乘法表 实现方式一 双重循环 f
  • 远程debug java_远程Debug Java进程的方法

    远程debug的意思是启动一个Java进程 启动一个debugger进程 将两者连接起来 利用debugger来debug Java进程 事实上目前所有的IDE的debug功能都是通过远程debug方式来实现的 它们都利用了一个叫做JDPA
  • 【行人重识别】Unsupervised Salience Learning for Person Re-identification

    Abstract 人眼可以基于 一些较小的显着区域来识别人的身份 然而 当使用现有方法计算图像的相似度时 通常会隐藏这种有价值的显着信息 此外 许多现有的方法学习区别性特征并以监督的方式处理急剧的视点变化 并要求为不同的摄像机视图对标注新的
  • QSqlQueryModle使用过滤器来完成数据库数据筛选

    原型 void QSqlTableModel setFilter const QString filter 注意 如果模型已从数据库中填充数据 则模型将其与新滤波器重新选择 否则 将在调用下一次select 中应用过滤器 model的sel
  • 15.服务数据的定义与使用

    学习视频 https www bilibili com video BV1zt411G7Vn p 15 目标 服务数据的自定义 客户端发布显示个人信息的请求 服务端处理请求及反馈应答 一 自定义服务数据 1 定义srv文件 mkdir ca
  • Python 判断None的三种方法

    1 if x is None 2 if not x 3 if not x is None 在Python 中 None False 空字符串 空列表 空元组 其实都相当于False 如果x为空列表 y为None 如果你做x is None的
  • 社区版pycharm官网下载安装教程

    1 官网下载安装包 官网地址 https www jetbrains com pycharm 选择所需版本 2 安装 安装前确认已完成python软件安装 建议不要安装到C盘 路径不要出现中文 直接install 等待安装 3 配置 点击桌
  • PyQt中的多线程使用方法(以PySide6为例)

    在Qt中 开启多线程的方法有多种 总体分成QThread QObject QRunnable QtConcurrent三大类方法 而放到PyQt和PySide具体的使用中 使用方法可以说十分类似 一 继承QThread类及run方法 此方法
  • while it seems to fit format ‘yyyy-MM-dd‘T‘HH:mm:ss.SSSX‘

    一 报错信息如下 2023 04 11 18 52 47 534 WARN 21608 nio 9090 exec 1 w s m s DefaultHandlerExceptionResolver Resolved org springf
  • 浅析CV下的无人驾驶技术

    报告题目 浅析CV下的无人驾驶技术 1 概述 2006年 Geoffrey Hinton老爷子针对传统的神经网络算法训练速度慢 面对多层Hidden Layer严重出现过拟合的现状 提出了无监督预训练对权值进行初始化 有监督训练微调的解决方
  • 三国群英传霸业之王服务器维护,《三国群英传2网络版》掌上助手APP曝光,三国群英传霸业之王...

    列位从公能否还为本人错过逛戏勾当而感应懊末路 能否曾身正在外但始末心系三国 又能否苦于只能侃侃而谈却无法展现本人的 宏图霸业 为了让大师可以或许随时随地查看逛戏情况 领会逛戏资讯 我们将正在逛戏上线后推出掌上帮手 列位从公能否还为本人错过逛
  • 【C/C++】日常学习7

    1 输入 输出流操作 2 构造函数参数参数列表初始化 3 C 中类的前向声明以及和 include的区别 4 在函数后加const的意义 1 输入 输出流操作 读取字符串的不同操作 cin 遇到空格 回车符就停止读取 空格 回车符是分隔符
  • ❓“想要创业项目,但又不知道互联网上有哪些好的项目?”

    想创业 但不知道从哪里入手 5大互联网创业项目 一起来了解一下吧 在互联网时代 创业项目不再局限于传统的实体店铺 下面介绍的是互联网创业项目 希望可以给想要创业的你提供一些启示 1 电商平台 电商平台是最为常见的互联网创业项目 可以选择开设
  • 实现Vue高德地图多边形编辑器吸附功能

    前言 之前做的高德地图多边形编辑器吸附功能 最近出现不能编辑 在修改的过程中顺便记录一下 实现效果 安装 npm i amap amap jsapi loader save 核心代码
  • windows7 搭建 Spark 详细图解

    第一步 下载Spark exe 可执行程序 程序的下载地址 http www igniterealtime org downloads index jsp openfire 如果遇到spark 无法正在安装的情况 可以参考该文章 安装Spa
  • TensorFlow2.X结合OpenCV 实现手势识别

    TensorFlow2 X结合OpenCV 实现手势识别 使用Tensorflow 构建卷积神经网络 训练手势识别模型 使用opencv DNN 模块加载模型实时手势识别 效果如下 先显示下部分数据集图片 0到9的表示 感觉很怪 构建模型进
  • java List集合转Excel表格文档

    前阵子有朋友问我java将excel转成文档的方法 用此方法需要引入jxl包 而最近公司刚好有个需求需要将数据转成excel文档 所以我就写了一个工具类 将数据对象转成excel文档 考虑到可能要传入不同类型的对象集合 为了能配合我那个朋友