Java 使用 Jxl 实现 Excel 导入导出
开发过程中经常需要用到数据的导入导出功能,之前用的是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 导入导出的更多相关文章
- Java之POI的excel导入导出
一.Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件.这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Offic ...
- java利用jxl实现Excel导入功能
本次项目实践基于Spring+SpringMvc+MyBatis框架,简单实现了Excel模板导出.和Excel批量导入的功能.实现过程如下:. 1.maven导入所需jar包 <depende ...
- 记录-java(jxl) Excel导入数据库
本内容主要包括(文件上传.excel2003数据导入数据库)excel导入数据库功能需要jxl jar包支持 下面是文件上传的前端测试代码 <%@ page language="ja ...
- java jxl excel 导入导出的 总结(建立超链接,以及目录sheet的索引)
最近项目要一个批量导出功能,而且要生成一个单独的sheet页,最后后面所有sheet的索引,并且可以点击进入连接.网上搜索了一下,找到一个方法,同时把相关的excel导入导出操作记录一下!以便以后使用 ...
- Java基础学习总结(49)——Excel导入导出工具类
在项目的pom文件中引入 <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifac ...
- Java Excel 导入导出(一)
本文主要描述通过java实现Excel导入导出 一.读写Excel三种常用方式 1.JXL——Java Excel开放源码项目:读取,创建,更新 2.POI——Apache POI ,提供API给Ja ...
- JAVA实现Excel导入/导出【转】
JAVA实现Excel导入/导出[转] POI的下载与安装 请到网站http://www.apache.org/dyn/closer.cgi/poi/右击超链接2.5.1.zip下载压缩包poi-bi ...
- java简易excel导入导出工具(封装POI)
Octopus 如何导入excel 如何导出excel github项目地址 Octopus Octopus 是一个简单的java excel导入导出工具. 如何导入excel 下面是一个excel文 ...
- Java基于注解和反射导入导出Excel
代码地址如下:http://www.demodashi.com/demo/11995.html 1. 构建项目 使用Spring Boot快速构建一个Web工程,并导入与操作Excel相关的POI包以 ...
随机推荐
- js计算日期相减天数
代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head ...
- python 标准库 glob ,python glob 学习
glob库是最简单的模块之一,内容非常少.用它可以查找符合特定规则的文件路径名.跟使用 windows 下的文件搜索差不多.查找文件只用到三个匹配符: ”*”, 匹配 个或多个字符: “?”, ”?” ...
- leetcode5:最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &quo ...
- 关于python27和windows系统的中文编码问题
最近想写一个python脚本实现对文件夹中的文件进行批量命名.每个文件对应从txt文档中提取出来的一行,因为文件名是中文,所以涉及到了一些中文编码的问题. 脚本运行环境是win10+python27 ...
- ASP.NET Core Web API 如何 数据分页 以及遇到'OFFSET' 附近有语法错误
最近领导叫我做的一个B/S端的小项目,突发奇想想用到core web api 今天写数据分页的时候,就想着 用linq分页查询吧,直接上代码 _context.Skip(Size * (PageNum ...
- Python3 单下划线_双下划线__开头
Python 中,下划线对解释器有特殊的含义,而且是内建标识符所使用的符号,使用时要多加留意. 在 Python3 的面向对象中,双下划线开头的变量和方法表名为私有变量和私有方法. __private ...
- eclipse Maven Dependencies 黑色背景说明
记录工作点点滴滴,大到系统设计,源码分析,小到IDE设置. 这里要说的是eclipse中Maven Dependencies 为什么有些jar用黑色背景,如下图所示: 网上很多人说jar包在本地仓库不 ...
- dt常用类
经常使用的一些datatable的操作,包括一些过滤去重的方法 using System; using System.Collections; using System.Collections.Gen ...
- 构建你的spring boot代码
Spring boot不需要任何特定的代码布局来工作.然而,有一些最佳实践可以帮助您. 1.避免使用缺省包 当一个类不包含包声明时,它被认为是在“缺省包”中.“默认包”的使用通常是不鼓励的,应该避免. ...
- 批处理-Java JDK环境变量配置
setx /M JAVA_HOME "C:\Program Files\Java\jdk1.8.0_131" setx /M CLASSPATH ".;%%JAVA_HO ...