开发过程中经常需要用到数据的导入导出功能,之前用的是POI,这次使用JXL,JXL相对于POI来说要轻量简洁许多,在数据量不大的情况下还是非常实用的。这里做一下使用JXL的学习记录。首先需要导入相应的jar包,pom.xml中添加如下内容即可

            <dependency>
                    <groupId>net.sourceforge.jexcelapi</groupId>
                    <artifactId>jxl</artifactId>
                    <version>2.6.12</version>
            </dependency>

看图说话:

0、数据实体类:

1、导出代码:

2、导入代码:

3、导出测试:

4、导出测试结果:
因为jxl不支持新本Excel格式,旧版本的表格最多只支持65536条数据;
这里测试导出最大65536条数据耗时1秒左右,速度还是非常快的,当然我这个跟我测试的实体字段比较少可能也有关系

5、导入测试:

6、导入测试结果:

以上就是Java实现Excel 导入导出的全部代码了

下面附上代码

数据实体类:

public class Customer {
        private String name;
        private Integer age;
        private String telephone;
        private String address;
        //这里get/set方法省略不贴
}

1、导出代码:

public static void excelExport(List<Customer> list, String path) {
        WritableWorkbook book = null;
        try {
                // 创建一个Excel文件对象
                book = Workbook.createWorkbook(new File(path));
                // 创建Excel第一个选项卡对象
                WritableSheet sheet = book.createSheet("第一页", 0);
                // 设置表头,第一行内容
                // Label参数说明:第一个是列,第二个是行,第三个是要写入的数据值,索引值都是从0开始
                Label label1 = new Label(0, 0, "姓名");// 对应为第1列第1行的数据
                Label label2 = new Label(1, 0, "年龄");// 对应为第2列第1行的数据
                Label label3 = new Label(2, 0, "手机号码");// 对应为第3列第1行的数据
                Label label4 = new Label(3, 0, "住址");// 对应为第4列第1行的数据
                // 添加单元格到选项卡中
                sheet.addCell(label1);
                sheet.addCell(label2);
                sheet.addCell(label3);
                sheet.addCell(label4);
                // 遍历集合并添加数据到行,每行对应一个对象
                for (int i = 0; i < list.size(); i++) {
                        Customer customer = list.get(i);
                        // 表头占据第一行,所以下面行数是索引值+1
                        // 跟上面添加表头一样添加单元格数据,这里为了方便直接使用链式编程
                        sheet.addCell(new Label(0, i + 1, customer.getName()));
                        sheet.addCell(new Label(1, i + 1, customer.getAge().toString()));
                        sheet.addCell(new Label(2, i + 1, customer.getTelephone()));
                        sheet.addCell(new Label(3, i + 1, customer.getAddress()));
                }
                // 写入数据到目标文件
                book.write();
        } catch (Exception e) {
                e.printStackTrace();
        } finally {
                try {
                        // 关闭
                        book.close();
                } catch (Exception e) {
                        e.printStackTrace();
                }
       }
}

2、导入代码:

public static List<Customer> excelImport(String path) {
        List<Customer> list = new ArrayList<>();
        Workbook book = null;
        try {
                // 获取Excel对象
                book = book.getWorkbook(new File(path));
                // 获取Excel第一个选项卡对象
                Sheet sheet = book.getSheet(0);
                // 遍历选项卡,第一行是表头,所以索引数-1
                for (int i = 0; i < sheet.getRows() - 1; i++) {
                        Customer customer = new Customer();
                        // 获取第一列第二行单元格对象
                        Cell cell = sheet.getCell(0, i + 1);
                        customer.setName(cell.getContents());
                        // 获取第二行其他数据
                        customer.setAge(Integer.parseInt(sheet.getCell(1, i + 1).getContents()));
                        customer.setTelephone(sheet.getCell(2, i + 1).getContents());
                        customer.setAddress(sheet.getCell(3, i + 1).getContents());
                        list.add(customer);
                }
                // 返回导入的数据集合
                return list;
        } catch (Exception e) {
                e.printStackTrace();
        } finally {
                try {
                        // 关闭
                        book.close();
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }
        return null;
}

3、导出测试代码:

public static void main(String[] args) {
        List<Customer> list = new ArrayList<>();
        // 创建数据
        for (int i = 0; i < 65535; i++) {
                Customer customer = new Customer();
                customer.setName("隔壁老王_" + i);
                customer.setAge(i);
                customer.setTelephone("1301234" + i);
                customer.setAddress("浙江杭州西湖");
                list.add(customer);
        }
        String path = "D:\\eclelTest\\xs.xls";
        System.out.println("开始导出...");
        long s1 = new Date().getTime();
        // 开始导出
        excelExport(list, path);
        long s2 = new Date().getTime();
        long time = s2 - s1;
        System.out.println("导出完成!消耗时间:" + time + "毫秒");
}

4、导入测试代码:

public static void main(String[] args) {
        String path = "D:\\eclelTest\\xs.xls";
        List<Customer> list = excelImport(path);
        for (Customer customer : list) {
                System.out.println(customer);
        }
}

Java 使用 Jxl 实现 Excel 导入导出的更多相关文章

  1. Java之POI的excel导入导出

    一.Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件.这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Offic ...

  2. java利用jxl实现Excel导入功能

    本次项目实践基于Spring+SpringMvc+MyBatis框架,简单实现了Excel模板导出.和Excel批量导入的功能.实现过程如下:. 1.maven导入所需jar包 <depende ...

  3. 记录-java(jxl) Excel导入数据库

    本内容主要包括(文件上传.excel2003数据导入数据库)excel导入数据库功能需要jxl  jar包支持 下面是文件上传的前端测试代码 <%@ page language="ja ...

  4. java jxl excel 导入导出的 总结(建立超链接,以及目录sheet的索引)

    最近项目要一个批量导出功能,而且要生成一个单独的sheet页,最后后面所有sheet的索引,并且可以点击进入连接.网上搜索了一下,找到一个方法,同时把相关的excel导入导出操作记录一下!以便以后使用 ...

  5. Java基础学习总结(49)——Excel导入导出工具类

    在项目的pom文件中引入 <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifac ...

  6. Java Excel 导入导出(一)

    本文主要描述通过java实现Excel导入导出 一.读写Excel三种常用方式 1.JXL——Java Excel开放源码项目:读取,创建,更新 2.POI——Apache POI ,提供API给Ja ...

  7. JAVA实现Excel导入/导出【转】

    JAVA实现Excel导入/导出[转] POI的下载与安装 请到网站http://www.apache.org/dyn/closer.cgi/poi/右击超链接2.5.1.zip下载压缩包poi-bi ...

  8. java简易excel导入导出工具(封装POI)

    Octopus 如何导入excel 如何导出excel github项目地址 Octopus Octopus 是一个简单的java excel导入导出工具. 如何导入excel 下面是一个excel文 ...

  9. Java基于注解和反射导入导出Excel

    代码地址如下:http://www.demodashi.com/demo/11995.html 1. 构建项目 使用Spring Boot快速构建一个Web工程,并导入与操作Excel相关的POI包以 ...

随机推荐

  1. unity 傅老师学习

    辅助插件 I tweeen anmition 补充valueto       https://www.bilibili.com/read/cv103358 开关门 iTween event脚本  iT ...

  2. vue element-ui 设置时间组件

    备注:设置开始时间小于结束时间 <!-- 开始时间 --> <div class="block"> <!-- <span class=" ...

  3. 为什么text的值改变后onchange没有反应?

    onchange发生在元素失去焦点后,而不是想象中的元素的值发生改变的时候.其实它的作用就跟onblur(失去焦点事件)差不多,只不过onchange是失去焦点且值发生了改变.要想实现目的,可以改用o ...

  4. postman笔记1--postman的安装教程

    一.postman插件的安装 第一步:首先在网上下载postman插件的安装包,下载到自己的本地进行解压(如果懒得去下载的同学,可以根据网盘分享的安装包去下载:链接:https://pan.baidu ...

  5. 包管理工具-yarn

    今天知道了一个新的包管理工具叫yarn,总结如下: 如果你知道npm的使用过程,那么yarn你就觉着相见恨晚呐...... npm存在的问题: >安装的时候无法保证速度的一致性 >安全问题 ...

  6. 20170529计划---统计业务量并生成EXCEL通过邮件发送

    每个月都要统计这些业务量的东东,烦死了,赶紧通过python写一个来搞定吧,三天搞定吧,未完待续哈. 2017-5-29 19:50粗略地做了一个思维导图哈 终于第三天完成啦 #encoding=ut ...

  7. PM学习梳理--需求管理

  8. Django 中文和时区设置

    Django 语言和时区的设置都在 settings.py 文件中. 中文设置 LANGUAGE_CODE:设置语言,英语 en-us,中文简体 zh-Hans,中文繁体 zh-Hant 在 MIDD ...

  9. JavaScript判断系统语言

    var lang= null; function language(){ var language=null; if (navigator.appName == 'Netscape'){ langua ...

  10. oracle 索引移动到不同的分区

    最近系统空间不够,要进行数据库清理,truncate数据之后,发现数据不连续,导致这个表空间占用巨大,想过使用shrink.move.但是shrink得效率比较慢,选择了move.语句大概如此: SE ...