• Excel导入工具类


    项目需要从Excel导入数据,然后插入到数据库对应表中。设计了一个导入工具类,导入数据和导入结果如下图示:

     

    poi jar版本采用的3.15

    导入工具类实现如下:

    package com.alphajuns.ssm.utils;
    
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.ss.usermodel.*;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    import org.junit.Test;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.text.DateFormat;
    import java.text.DecimalFormat;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    /**
     * 导入工具类
     */
    public class ExcelPoiImportUtils {
    
        /**
         * 导入测试
         * @param args
         */
        public static void main(String[] args) {
            File file = new File("F:\样机试制新的导入模板1.xlsx");
            List<List<String>> excelListList = importFromExcel(file);
            for (int i = 0; i < excelListList.size(); i++) {
                System.out.println(excelListList.get(i));
            }
        }
    
        /**
         * 导入
         * @param file
         * @return
         */
        public static List<List<String>> importFromExcel(File file) {
            // 用于保存读取的Excel信息
            List<List<String>> excelListList = new ArrayList<List<String>>();
            // 创建工作簿
            Workbook workBook = null;
            // 获取文件名
            String fileName = file.getName();
            // 判断Excel类型,是Excel2003还是Excel2007,通过文件名后缀判断
            try {
                if (fileName.endsWith("xls")) {
                workBook = new HSSFWorkbook(new FileInputStream(file));
                } else if (fileName.endsWith("xlsx")) {
                    workBook = new XSSFWorkbook(new FileInputStream(file));
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            // 获得第一个sheet
            Sheet sheet = workBook.getSheetAt(0);
            // 获得该sheet的所有行
            int rows = sheet.getPhysicalNumberOfRows();
            for (int i = 0; i < rows; i++) {
                // 获取一行
                Row row = sheet.getRow(i);
                // 第一行为标题行,跳过
                if (i == 0) {
                    continue;
                }
                // 获得列数
                int cellNums = row.getLastCellNum();
                // 用于保存每行数据
                List<String> excelList = new ArrayList<String>();
                // 一次保存列信息
                for (int j = 0; j < cellNums; j++) {
                    Cell cell = row.getCell(j);
                    String cellValue = getCellValue(cell).trim();
                    excelList.add(cellValue);
                }
                excelListList.add(excelList);
            }
    
            return excelListList;
        }
    
        /**
         * 获取单元格的值
         * @param cell
         * @return
         */
        public static String getCellValue(Cell cell) {
            String cellValue = null;
            if (cell == null) {
                cellValue = "";
            }
            // 获取单元格类型
            int cellType = cell.getCellType();
            DecimalFormat decimalFormat = new DecimalFormat("0");
            switch (cellType) {
                case Cell.CELL_TYPE_BLANK:
                    cellValue = "";
                    break;
                case Cell.CELL_TYPE_NUMERIC:
                    // 判断是否为日期
                    if (DateUtil.isCellDateFormatted(cell)) {
                        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
                        cellValue = dateFormat.format(cell.getDateCellValue());
                    } else {
                        String number = String.valueOf(cell.getNumericCellValue());
                        // 是否是浮点数
                        if (number.indexOf(".") != -1) {
                            decimalFormat = new DecimalFormat("#.###");
                        }
                        cellValue = decimalFormat.format(cell.getNumericCellValue());
                    }
                    break;
                case Cell.CELL_TYPE_STRING:
                    cellValue = String.valueOf(cell.getStringCellValue());
                    break;
                case Cell.CELL_TYPE_FORMULA:
                    // 公式需要获取其数值
                    cell.setCellType(CellType.NUMERIC);
                    cellValue = decimalFormat.format(cell.getNumericCellValue());
                    break;
                case Cell.CELL_TYPE_BOOLEAN:
                    cellValue = String.valueOf(cell.getBooleanCellValue());
                case Cell.CELL_TYPE_ERROR:
                    cellValue = String.valueOf(cell.getErrorCellValue());
                    break;
                default:
                    cellValue = cell.getStringCellValue();
                    break;
            }
    
            return cellValue;
        }
    
    }
  • 相关阅读:
    read_csv 函数
    fillna()
    一个逗号引发的错误
    数据预处理
    groupby()
    泰坦尼克号 预处理
    python string
    python title()的用法
    translate()函数及ROT13加密
    python Lambda, filter, reduce and map
  • 原文地址:https://www.cnblogs.com/alphajuns/p/11953884.html
Copyright © 2020-2023  润新知