Java读取Excel文件数据并将记录写入到新的文件中--POI技术实现

1. apache poi包里有4个主要的类:

  • Workbook------工作表,通过WorkbookFactory的create(FileInputStream fis)方法获取,
  • Sheet------------表格,Workbook实例的getSheetAt(int num)方法获取,
  • Row--------------行,Sheet实例的getRow(int num)方法获取,
  • Cell--------------单元格,Row实例的getCell(int num)方法获取,
    最后通过Cell实例根据数据类型调用对应的方法获取单元格的值。

2. 代码

package com.upi.institution.utils;

import com.upi.institution.common.utils.CommonUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

public class ExcelUtil {

    private static Logger logger = LoggerFactory.getLogger(ExcelUtil.class);

    private static Workbook workbook;
    private static Sheet sheet;

    /**
     * 初始化表格,判断文件格式是xls还是xlsx
     * @param excelPath
     */
    private static void initExcel(String excelPath){
        if (CommonUtils.isEmpty(excelPath)){
            logger.info("文件路径不能为空");
            workbook = null;
            return;
        }
        try {
            InputStream is = new FileInputStream(excelPath);
            if (excelPath.endsWith(".xls")){//.xls格式
                workbook = new HSSFWorkbook(is);
            }else if(excelPath.endsWith(".xlsx")){//.xlsx格式
                workbook = new XSSFWorkbook(is);
            }else{
                workbook = null;
                logger.info("无法转换的Excel文件格式(后缀名应为:.xls或.xlsx)");
            }
        } catch (FileNotFoundException e) {
            logger.info("找不到指定文件");
        } catch (IOException e) {
            logger.info("IO异常");
        }
    }

    /**
     * 读取Excel文件并解析成json字符串后写入新的文件
     * @param excelPath 要解析的Excel文件路径(具体文件)
     * @param fromRow 指定开始读取的行数,如从第2行开始则为2
     * @param filePath 写入json后的文件保存位置(文件路径)
     */
    private static void readExcelToJsonFile(String excelPath, int headerNum, int fromRow, String filePath){
        initExcel(excelPath);
        if(workbook == null){
            logger.info("初始化工作簿失败");
            return;
        }
        for(int s=0; s map = new HashMap();
                Row row = sheet.getRow(i);
                if(row == null){
                    continue;
                }
                int cellNum = row.getLastCellNum();//总列数
                for(int j=0; j

3. 测试

Java读取Excel文件数据并将记录写入到新的文件中--POI技术实现_第1张图片
test.xls表格数据

运行代码:


Java读取Excel文件数据并将记录写入到新的文件中--POI技术实现_第2张图片
控制台
Java读取Excel文件数据并将记录写入到新的文件中--POI技术实现_第3张图片
桌面生成的文件
Java读取Excel文件数据并将记录写入到新的文件中--POI技术实现_第4张图片
json数据
Java读取Excel文件数据并将记录写入到新的文件中--POI技术实现_第5张图片
文件名

你可能感兴趣的:(Java读取Excel文件数据并将记录写入到新的文件中--POI技术实现)