java poi的基本使用

 一、pom依赖

poi针对旧版本的文件,poi-ooxml针对新版本的文件

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

二、java实现

package cn.pkulaw.fblx.util.poi;

import cn.pkulaw.fblx.model.domain.ExcelPaichong;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @Author: WXM
 * @Description:
 * @Date: create in 2021/1/28 14:59
 */

public class ExcelUtils {

    //根据表头创建excel文档
    public static HSSFWorkbook getExcelWithTitle(String[] title){
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet("Sheet1");
        HSSFRow row = sheet.createRow(0);
        HSSFCell cell;
        for(int i=0;i<title.length;i++){
            cell = row.createCell(i);
            cell.setCellValue(title[i]);
        }
        return workbook;
    }

    //把上传文件转化为excel
    public static Workbook getExcelFromFile(MultipartFile file){
        String fileName = file.getOriginalFilename();
        String EXCEL2003 = "xls";
        String EXCEL2007 = "xlsx";
        Workbook workbook = null;
        if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) {
            throw new RuntimeException("传入文件格式错误");
        } else {
            try {
                InputStream is = file.getInputStream();
                if (fileName.endsWith(EXCEL2007)) {
                    workbook = new XSSFWorkbook(is);
                }
                if (fileName.endsWith(EXCEL2003)) {
                    workbook = new HSSFWorkbook(is);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return workbook;
    }

    //读取导入数据
    public static List<ExcelPaichong> excelToObjectList(Workbook workbook ,String sheetName){
        List<ExcelPaichong> excelPaichongs = new ArrayList<>();
        boolean isFirstRow = true;
        if(null != workbook){
            Sheet sheet = workbook.getSheet(sheetName);
            if(null!=sheet){
                Iterator<Row> rowIterator = sheet.rowIterator();
                while (rowIterator.hasNext()){
                    //将第一行标题行跳过
                    if(isFirstRow){
                        isFirstRow = false;
                        continue;
                    }
                    ExcelPaichong ep = new ExcelPaichong();
                    Row row = rowIterator.next();
                    //只有行有编号才是有效行
                    if(null!=row && null!=row.getCell(0)){
                        ep.setId(null==row.getCell(0)?null:(int) row.getCell(0).getNumericCellValue());
                        ep.setZsName(null==row.getCell(2)?null:row.getCell(2).getStringCellValue());
                        ep.setFwzh(null==row.getCell(3)?null:row.getCell(3).getStringCellValue());
                        ep.setLib(null==row.getCell(8)?null:row.getCell(8).getStringCellValue());
                        ep.setPplx(null==row.getCell(9)?null:row.getCell(9).getStringCellValue());
                        excelPaichongs.add(ep);
                    }
                }
            }
        }
        return excelPaichongs;
    }

//指定将集合加载到excel中
    public HSSFWorkbook getExcelFromObject(List<ExcelPaichong> excelPaichongs){
        //获取有标题列的excel对象
        String[] title = {"编号","Gid","标题","发文字号","发布部门","发布时间","数据状态","后台","库别","匹配类型"};
        HSSFWorkbook workBook = ExcelUtils.getExcelWithTitle(title);
        HSSFSheet sheet1 = workBook.getSheet("Sheet1");

        if(null!=excelPaichongs){
            for(int i=0;i<excelPaichongs.size();i++){
                HSSFRow row = sheet1.createRow(i + 1);
                row.createCell(0).setCellValue(excelPaichongs.get(i).getId());
                row.createCell(1).setCellValue(excelPaichongs.get(i).getGid());
                row.createCell(2).setCellValue(excelPaichongs.get(i).getZsName());
                row.createCell(3).setCellValue(excelPaichongs.get(i).getFwzh());
                row.createCell(4).setCellValue(excelPaichongs.get(i).getFbbm());
                row.createCell(5).setCellValue(excelPaichongs.get(i).getFdate());
                row.createCell(6).setCellValue(excelPaichongs.get(i).getZsType());
                row.createCell(7).setCellValue(excelPaichongs.get(i).getDataFrom());
                row.createCell(8).setCellValue(excelPaichongs.get(i).getLib());
                row.createCell(9).setCellValue(excelPaichongs.get(i).getPplx());
            }
        }
        return workBook;
    }
}

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值