zoukankan      html  css  js  c++  java
  • Java读取excel的示例

    一、引用的jar包,apache的POI

    // https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml
    compile group: 'org.apache.poi', name: 'poi-ooxml', version: '3.17'
    // https://mvnrepository.com/artifact/org.apache.poi/poi
    compile group: 'org.apache.poi', name: 'poi', version: '3.17'

    二、完整的类示例

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.text.DecimalFormat;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.DateUtil;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.ss.usermodel.Workbook;
    
    public class ExcelUtil {
    
        public static void main(String[] args) {
            long t = System.currentTimeMillis();
            // ArrayList<ArrayList<Object>> result = new
            // ExcelUtil().readExcel("D://工作表.xlsx");
            ArrayList<ArrayList<Object>> result = new ExcelUtil().readExcelByColumn("D://工作表.xlsx", new int[] { 1, 2, 9 });
            System.out.println(System.currentTimeMillis() - t);
            for (int i = 0; i < result.size(); i++) {
                for (int j = 0; j < result.get(i).size(); j++) {
                    System.out.print("[" + result.get(i).get(j).toString() + "]	");
                }
                System.out.println("");
            }
        }
    
        public ArrayList<ArrayList<Object>> readExcel(String fileName) {
            ArrayList<ArrayList<Object>> rowList = new ArrayList<ArrayList<Object>>();
            ArrayList<Object> colList;
            try {
                Workbook wb = initWorkBook(fileName);
                Sheet sheet = wb.getSheetAt(0);
                Row row = null;
                Cell cell = null;
                for (int i = sheet.getFirstRowNum(), rowCount = 0; rowCount < sheet.getPhysicalNumberOfRows(); i++) {
                    row = sheet.getRow(i);
                    colList = new ArrayList<Object>();
                    if (row == null) {
                        if (i != sheet.getPhysicalNumberOfRows()) {
                            rowList.add(colList);
                        }
                        continue;
                    } else {
                        rowCount++;
                    }
                    for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {
                        cell = row.getCell(j);
                        if (cell == null) {
                            if (j != row.getLastCellNum()) {
                                colList.add("");
                            }
                            continue;
                        }
                        colList.add(readColValue(cell));
                    }
                    rowList.add(colList);
                }
                return rowList;
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
            return null;
        }
    
        public ArrayList<ArrayList<Object>> readExcelByColumn(String fileName, int[] colId) {
            ArrayList<ArrayList<Object>> rowList = new ArrayList<ArrayList<Object>>();
            ArrayList<Object> colList;
            try {
                Workbook wb = initWorkBook(fileName);
                Sheet sheet = wb.getSheetAt(0);
                Row row = null;
                Cell cell = null;
                for (int i = sheet.getFirstRowNum(), rowCount = 0; rowCount < sheet.getPhysicalNumberOfRows(); i++) {
                    row = sheet.getRow(i);
                    colList = new ArrayList<Object>();
                    if (row == null) {
                        if (i != sheet.getPhysicalNumberOfRows()) {
                            rowList.add(colList);
                        }
                        continue;
                    } else {
                        rowCount++;
                    }
                    for (int j = 0; j < colId.length; j++) {
                        cell = row.getCell(colId[j]);
                        // here different from read all ! as no end limit.
                        if (cell == null) {
                            colList.add("");
                            continue;
                        }
                        colList.add(readColValue(cell));
                    }
                    rowList.add(colList);
                }
                return rowList;
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
            return null;
    
        }
    
        private String readColValue(Cell cell) {
            String value = "";
            switch (cell.getCellTypeEnum()) {
            case STRING:
                value = cell.getStringCellValue();
                break;
            case NUMERIC:
                short format = cell.getCellStyle().getDataFormat();
                if (format == 0) {
                    DecimalFormat df = new DecimalFormat("#");
                    value = df.format(cell.getNumericCellValue());
                } else {
                    SimpleDateFormat sdf = null;
                    if (format == 14 || format == 31 || format == 57 || format == 58) {
                        sdf = new SimpleDateFormat("yyyy-MM-dd");
                    } else if (format == 20 || format == 32) {
                        sdf = new SimpleDateFormat("HH:mm");
                    }
                    Date date = DateUtil.getJavaDate(cell.getNumericCellValue());
                    value = sdf.format(date);
                }
                break;
            case BOOLEAN:
                value = String.valueOf(Boolean.valueOf(cell.getBooleanCellValue()));
                break;
            case BLANK:
                value = "";
                break;
            default:
                value = cell.toString();
            }
            return value;
        }
    
        private Workbook initWorkBook(String fileName) throws IOException {
            File file = new File(fileName);
            InputStream is = new FileInputStream(file);
            Workbook workbook = null;
            if (fileName.endsWith(".xls")) {
                workbook = new HSSFWorkbook(is);
            } else if (fileName.endsWith(".xlsx")) {
                workbook = new XSSFWorkbook(is);
            }
            return workbook;
        }
    }
  • 相关阅读:
    Vue 2.x windows环境下安装
    VSCODE官网下载缓慢或下载失败 解决办法
    angular cli 降级
    Win10 VS2019 设置 以管理员身份运行
    XSHELL 连接 阿里云ECS实例
    Chrome浏览器跨域设置
    DBeaver 执行 mysql 多条语句报错
    DBeaver 连接MySql 8.0 报错 Public Key Retrieval is not allowed
    DBeaver 连接MySql 8.0报错 Unable to load authentication plugin 'caching_sha2_password'
    Linux系统分区
  • 原文地址:https://www.cnblogs.com/yoyotl/p/8270701.html
Copyright © 2011-2022 走看看