1. 将Excel中的数据读取到List<Map<String, Object>>集合中

     

package com.mvc.util;

 

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStream;

import java.lang.reflect.Field;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

 

import jxl.Cell;

import jxl.Sheet;

import jxl.Workbook;

import jxl.read.biff.BiffException;

import jxl.write.Label;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

 

/**

* 使用jxl操作Excel的工具类

*

* @author
djzc

*/

public
class ExcelUtil {

 

    /**

     * 将Excel 中的数据导入到List<Map<String, Object>>中
说明:只支持
xls后缀结尾的excel文件(Excel

     * 2003)

     *

     * @param input

     * 指定excel文件输入流

     * @param index

开始)

     * @param columnName

     * (注意:顺序需要保持一致) : 列名称(对应数据库中的字段)
如果想用excel中原始的列名称,只需传入null即可

     */

    public
static List<Map<String, Object>> getDataFromExcel(InputStream input, Integer index, String[] columnName) {

        // 定义文本簿

        Workbook rwb = null;

        // 定义容器

        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

        // 定义容器存储列名称

        List<String> columnList = new ArrayList<String>();

 

        try {

            rwb = Workbook.getWorkbook(input);

            if (index == null || index > rwb.getSheets().length || index < 0) {

                index = 0;

            }

            // 获得第一个工作表对象

            Sheet sheet = rwb.getSheet(index);

            int
rows = sheet.getRows();

            int
columns = sheet.getColumns();

            for (int
i = 0; i < rows; i++) {

                Map<String, Object> map = new HashMap<String, Object>();

                for (int
j = 0; j < columns; j++) {

                    // 表示获取第i行第j列

                    Cell cell = sheet.getCell(j, i);

                    String result = cell.getContents();

                    // 存储列名称

                    if (i == 0 && columnName == null) {

                        columnList.add(result);

                    } else {

                        if (columnName == null) {

                            map.put(columnList.get(j), result);

                        } else {

                            map.put(columnName[j], result);

                        }

                    }

                }

                if (i != 0) {

                    list.add(map);

                }

            }

        } catch (BiffException | IOException e) {

            e.printStackTrace();

            return
null;

        } finally {

            if (rwb != null) {

                rwb.close();

            }

        }

        return
list;

    }

 

    /**

     * 将List集合中的对象导入到Excel文件中

     *

     * @author
:zc

     * @date
:2017年4月6日
上午9:19:16

     * @param bean

     * :实体类对象的ArrayList集合

     * @param str

     * : Excel文件的路径

     */

    public
static
void excleOut(ArrayList<Object> bean, String str) {

        WritableWorkbook book = null;// 编写WritableWorkbook对象,该对象代表了excel对象

        try {

            book = Workbook.createWorkbook(new File(str));// 创建文件路径str

            WritableSheet sheet = book.createSheet("sheet", 0);// 获取sheet对象

            // 对集合进行遍历

            for (int
i = 0; i < bean.size(); i++) {

                Object ob = bean.get(i);// 集合中的对象不确定,用Object代替

                // 利用反射机制

                Class
cl = ob.getClass();// 运行时获得传递过来的对象

                Field[] fi = cl.getDeclaredFields();// 获取所有属性的对象,用来获取属性

                for (int
j = 0; j < fi.length; j++) {// 将获得的对象遍历出来

                    fi[j].setAccessible(true);// 启用访问权限

                    // 获取值
列(j),行(i),值fi[j]为字符串方式

                    Label la = new Label(j, i, String.valueOf(fi[j].get(ob)));

                    sheet.addCell(la);// 将数据写入sheet对象中

                }

            }

            book.write();

        } catch (Exception e) {

            e.printStackTrace();

        } finally {

            try {

                book.close();

            } catch (Exception e) {

                e.printStackTrace();

            }

        }

    }

 

    /**

     * javaBean 转 Map

     *

     * @param object

     * 需要转换的javabean

     * @return
转换结果map

     * @throws Exception

     */

    public
static Map<String, Object> beanToMap(Object object) throws Exception {

        Map<String, Object> map = new HashMap<String, Object>();

 

        Class
cls = object.getClass();

        Field[] fields = cls.getDeclaredFields();

        for (Field field : fields) {

            field.setAccessible(true);

            map.put(field.getName(), field.get(object));

        }

        return
map;

    }

 

    /**

     * @param map

     * 需要转换的map

     * @param cls

     * 目标javaBean的类对象

     * @return
目标类object

     * @throws Exception

     */

    public
static Object mapToBean(Map<String, Object> map, Class
cls) {

        Object object;

        try {

            object = cls.newInstance();

            for (String key : map.keySet()) {

                Field temFiels = cls.getDeclaredField(key);

                temFiels.setAccessible(true);

                if (temFiels.getType().toString().equals("class java.util.Date")) {

                    temFiels.set(object, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(map.get(key).toString()));

                } else {

                    temFiels.set(object, map.get(key));

                }

            }

        } catch (Exception e) {

            e.printStackTrace();

            return
null;

        }

        return
object;

    }

 

    public
static
void main(String[] args) {

        try {

            InputStream is = new FileInputStream("D://test.xls");

            // 指定Excel的列名称

            List<Map<String, Object>> list = getDataFromExcel(is, 0, new String[] { "membername", "memberid", "membercardid", "points", "operationtype", "changetime" });

            // 不指定Excel的列名称

            // List<Map<String, Object>> list = getDataFromExcel(is, 0, null);

            for (int
i = 0; i < list.size(); i++) {

                System.out.println(list.get(i));

        /**

         * 打印出的结果({changetime=2017-02-15 19:01:57, membercardid=2017021517585890892074,

         * operationtype=消费获取, membername=李白, memberid=C90B78E8AB8E4F43B27D084F285364B1, points=21})

         */

            }

        } catch (FileNotFoundException e) {

            e.printStackTrace();

        }

    }

 

}

 

JXL导出Excel工具类的更多相关文章

  1. 导入导出Excel工具类ExcelUtil

    前言 前段时间做的分布式集成平台项目中,许多模块都用到了导入导出Excel的功能,于是决定封装一个ExcelUtil类,专门用来处理Excel的导入和导出 本项目的持久化层用的是JPA(底层用hibe ...

  2. javaEE开发之导出excel工具类

    web开发中,一个系统的普通需求也包含导出excel,一般採用POI做统计报表导出excel. 导出excel工具类: import java.io.FileOutputStream; import ...

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

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

  4. 导出Excel工具类

    import java.io.OutputStream; import java.lang.reflect.Method; import java.text.SimpleDateFormat; imp ...

  5. java导出excel工具类

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

  6. Java XSSF 导出excel 工具类

    参数解释: title:导出excel标题.headers 导出到excel显示的列头. columns 对应数据库字段 .list 导出数据1.pox中添加依赖 <dependency> ...

  7. 使用POI导出EXCEL工具类并解决导出数据量大的问题

    POI导出工具类 工作中常常会遇到一些图表需要导出的功能,在这里自己写了一个工具类方便以后使用(使用POI实现). 项目依赖 <dependency> <groupId>org ...

  8. NPOI导入导出Excel工具类

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Ref ...

  9. 关于Excel导入导出POI工具类

    import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import ...

随机推荐

  1. 跟着百度学PHP[12]-文件处理 文件 目录

    00x1 文件的属性 文件属性 <?php //-------------------------定义大小转换函数--------------- function changesize_dw($ ...

  2. 用c++封装linux系统调用

    #include <pthread.h> #include <cstdlib> #include <ctime> #include <iostream> ...

  3. 扩展RBAC用户角色权限设计方案<转>

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...

  4. rsync详解之exclude排除文件

    rsync详解之exclude排除文件 问题:如何避开同步指定的文件夹?  --excludersync  --exclude files and folders http://articles.sl ...

  5. golang Time to String

    golang Time to String allenhaozi · 2016-09-02 09:00:00 · 2447 次点击 · 预计阅读时间 1 分钟 · 19分钟之前 开始浏览 这是一个创建 ...

  6. ASP.NET MVC4 异常拦截

    ASP.NET MVC4 程序发生异常时,通过拦截Action的异常,重写ActionFilterAttribute 的方法OnActionExecuted实现. 具体实现代码如下: /// < ...

  7. 关于Unity的开发模式

    Unity是组件化的开发模式,总结起来就是节点与组件.节点就像人,组件就像工具,人拿不同的工具,就变成不同的角色,有不同的作用.人+医学常识=医生. 1.每个空节点创建后,刚开始只有一个Transfo ...

  8. error: icpc: Command not found

    交叉编译qt的程序时,出现错误:error: icpc: Command not found. 解决方法,详情查看链接. http://www.cnblogs.com/zengjfgit/p/4744 ...

  9. CListBox自动换行显示

    需要在ListBox控件中显示一些信息.为方便查看,不使用水平滚动条.当要输出的字符串占用的宽度超过ListBox的宽度时,截断字符串,剩余的在下一行显示. 1. 计算ListBox所占的宽度,用Ge ...

  10. 兔子--android中百度地图的开发

    效果: API Key的申请地址:http://lbsyun.baidu.com/apiconsole/key 申请注意事项: 安全码:以下界面的SHA1  fingerprint值+;+包名 比如: ...