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. JQuery操作表单相关使用总结

    select下拉列表onChange事件之JQuery实现: JQuery: $(document).ready(function () { $("#selectMenu").bi ...

  2. malloc 返回值的类型是 void *

    malloc 返回值的类型是 void *,所以在调用 malloc 时要显式地进行类型转换,将 void * 转换成所需要的指针类型. #include <iostream> using ...

  3. 算法优化:rgb向yuv的转化最优算法

    朋友曾经给我推荐了一个有关代码优化的pdf文档<让你的软件飞起来>,看完之后,感受颇深.为了推广其,同时也为了自己加深印象,故将其总结为word文档.下面就是其的详细内容总结,希望能于己于 ...

  4. Spring Boot注解(annotation)列表

    (1)@SpringBootApplication 申明让spring boot自动给程序进行必要的配置,这个配置等同于: @Configuration ,@EnableAutoConfigurati ...

  5. (转)c指针问题

    字符串常量问题: http://blog.csdn.net/zhongyili_sohu/article/details/8084188 1. 常量字符串 在代码里直接出现的”abcdef”这种字符串 ...

  6. 使用jquery操作session方法分享

    摘要: 今天分享的是使用jquery来处理session.我们将使用sessionStorage对象,它类似与localStorage对象,只是sessionStorage是用来储存session数据 ...

  7. eclipse中打开含有汉字的properties文件显示乱码

    http://blog.csdn.net/wangjun5159/article/details/46965831

  8. OOXML,XLSX分析

    07以上的xlsx是使用了OOXML和zip,将后缀修改为.zip,就可以看到文件,主要分析xl目录下的文件,如图: 主要数据文件在xl目录下面 styles.xml里面存放着excel的样式数据 很 ...

  9. IOS内购支付服务器验证模式

    IOS 内购支付两种模式: 内置模式 服务器模式 内置模式的流程: app从app store 获取产品信息 用户选择需要购买的产品 app发送支付请求到app store app store 处理支 ...

  10. 简单的纯css重置input单选多选按钮的样式--利用伪类

    由于input单选多选的原生样式通常都不符合需求,所以在实现功能时通常都需要美化按钮 html <input type="radio" /> <input typ ...