Java 操作excel

Java读写excel的两种方式
  (1)apache poi
  (2)alibaba easyexcel
  两种方式写入excel的区别;
  poi会先把所有的数据读入到内存中,然后写入到excel中;easyexcel则是把数据一条一条写入excel中。所以如果有大量数据时,比如有100w条数据写入excel中,使用poi会先把数据读入内存中,可能会造成内存溢出;而easyexcel则把数据一条一条写入excel中。*

POI操作excel

依赖

 <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>4.1.2</version>
    </dependency>

excel有03和07两个版本,所以使用poi读写excel也略有区别。
  (1)03版本excel文件后缀名.xls,最多能写入65535条数据;07版本excel文件后缀名.xlsx,理论上能写更多条数据,但是使用普通对象写入excel消耗时间更长,大量写入可以使用SXSSFWorkbook;
  (2)03和07版本excel创建对象不同,03版本创建HSSFWorkbook对象,07版本创建XSSFWorkbook对象,大量数据读写使用SXSSFWorkbook;
  
建立Excel常用对象

1 HSSFWorkbook wb = new HSSFWorkbook();//创建Excel工作簿对象 
2 HSSFSheet sheet = wb.createSheet("new sheet");//创建Excel工作表对象 
3 HSSFRow row = sheet.createRow((short)0); //创建Excel工作表的行 
4 cellStyle = wb.createCellStyle();//创建单元格样式 
5 row.createCell((short)0).setCellStyle(cellStyle); //创建Excel工作表指定行的单元格 
6 row.createCell((short)0).setCellValue(1); //设置Excel工作表的值

得到Excel常用对象

1  FileInputStream fis = new FileInputStream(new File("D:/1.xlsx")); 
 2 //得到Excel工作簿对象 
 3 HSSFWorkbook wb = new HSSFWorkbook(fis); 
 4 //得到Excel工作表对象 
 5 HSSFSheet sheet = wb.getSheetAt(0); 
 6 //得到Excel工作表的行 
 7 HSSFRow row = sheet.getRow(i); 
 8 //得到Excel工作表指定行的单元格 
 9 HSSFCell cell = row.getCell((short) j); 
10 cellStyle = cell.getCellStyle();//得到单元格样式

设置sheet名称和单元格内容

1 wb.setSheetName(1, "第一张工作表",HSSFCell.ENCODING_UTF_16); 
2 cell.setEncoding((short) 1); 
3 cell.setCellValue("单元格内容");

取得sheet的数目

1 wb.getNumberOfSheets()

根据index取得sheet对象

1 HSSFSheet sheet = wb.getSheetAt(0);

取得有效的行数

1 int rowcount = sheet.getLastRowNum();

取得一行的有效单元格个数

1 row.getLastCellNum();

单元格值类型读写

1 cell.setCellType(HSSFCell.CELL_TYPE_STRING); //设置单元格为STRING类型 
2 cell.getNumericCellValue();//读取为数值类型的单元格内容
**设置列宽、行高**
1 sheet.setColumnWidth((short)column,(short)width); 
2 row.setHeight((short)height);

添加区域,合并单元格

1 Region region = new Region((short)rowFrom,(short)columnFrom,(short)rowTo 
2 ,(short)columnTo);//合并从第rowFrom行columnFrom列 
3 sheet.addMergedRegion(region);// 到rowTo行columnTo的区域 
4 //得到所有区域 
5 sheet.getNumMergedRegions() 

保存Excel文件

1 FileOutputStream fileOut = new FileOutputStream(path); 
2 wb.write(fileOut);

使用easyexcel读写excel

https://www.yuque.com/easyexcel/doc/easyexcel

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值