java excel操作_java操作Excel简单入门

简介

在项目中使用到Excel是很常见的,如批量导入数据,批量导出数据。这里我们使用Apache的开源项目POI来操作Excel。官网

添加依赖

org.apache.poi

poi-ooxml

3.9

创建Excel文件

@AllArgsConstructor

@NoArgsConstructor

@Setter

@Getter

@ToString

@Accessors(chain = true)

public class Person {

private String username;

private String gender;

private String address;

}

定义用户模型

public class Client {

public static void main(String[] args) throws Exception {

List personList = Arrays.asList(

new Person().setUsername("李四").setGender("男").setAddress("北京"),

new Person().setUsername("小王").setGender("女").setAddress("上海"));

//工作簿 表示一个excel文件

Workbook wb = new SXSSFWorkbook();

//一个表格

Sheet sheet = wb.createSheet();

//创建标题行

Row row = sheet.createRow(0);

//1个单元格

Cell cell = row.createCell(0);

cell.setCellValue("用户名");

cell = row.createCell(1);

cell.setCellValue("性别");

cell = row.createCell(2);

cell.setCellValue("地址");

AtomicInteger rowIndex = new AtomicInteger(1);

for (Person person : personList) {

//创建数据行

row = sheet.createRow(rowIndex.getAndIncrement());

row.createCell(0).setCellValue(person.getUsername());

row.createCell(1).setCellValue(person.getGender());

row.createCell(2).setCellValue(person.getAddress());

}

wb.write(new FileOutputStream("D:\\person.xlsx"));

}

}

生成的Excel如下

0147280ab1f82eba77cd2e016eaa3037.png

Workbook在POI中有3种实现,

HSSFWorkbook,适用于2003及之前的版本,后缀为.xls,行数最多为65536行

XSSFWorkbook,适用于2007及之后的版本,后缀为.xlsx,行数最多为1048576行,可能出现OutOfMemoryError错误

SXSSFWorkbook,适用于大型Excel文件的操作,不会造成内存溢出,基本原理就是空间换时间,将数据保存到硬盘中

5d20c2a09025f6593fdc1b6fcd0e6d82.png

可以看到两种版本的行大小和列大小

1fc491368bab9b114b8dc79b6c20f0b5.png

2b85155f4f182df9f3f16d01e1e0acce.png

b1a51a6ae8c5fce419da1b521c325a5e.png

可以看到,在创建行对象之前都会校验最大行数。

SXSSFWorkbook会使用很低的内存,这是因为超过100行的数据都会保存到临时文件中

4a541743c01d2d5a0dd20421b5ef4324.png

667ab74c6b4f6613049aaac93e697e28.png

临时文件中内容为

08b1c3b2238654b8730f8cb9b2bc4b6a.png

读取Excel文件

public class Client {

public static void main(String[] args) throws Exception {

Workbook wb = new XSSFWorkbook(new FileInputStream("D:\\person.xlsx"));

Sheet sheet = wb.getSheetAt(0);

Iterator rowIterator = sheet.iterator();

//过滤标题行

rowIterator.next();

List personList = new ArrayList<>();

while (rowIterator.hasNext()) {

Row row = rowIterator.next();

Person person = new Person();

Cell cell;

cell = row.getCell(0);

if (cell != null) {

person.setUsername(cell.getStringCellValue());

}

cell = row.getCell(1);

if (cell != null) {

person.setGender(cell.getStringCellValue());

}

cell = row.getCell(2);

if (cell != null) {

person.setAddress(cell.getStringCellValue());

}

personList.add(person);

}

System.out.println(personList);

}

}

可以看到,使用POI操作Excel还是很简单的,关于更加复杂的Excel功能,请读者自行研究。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值