zoukankan      html  css  js  c++  java
  • POI解析excel

    package com.util.poi;

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;

    import org.apache.commons.io.FilenameUtils;
    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.HSSFWorkbook;
    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.ss.usermodel.Workbook;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    /**
     * Excel组件
     *  
     * @author taller
     * @version 1.0
     * @since 1.0
     */  
    public class ExcelHelper {

         /**
         * Excel 2003
         */  
        private final static String XLS = "xls";  
        /**
         * Excel 2007
         */  
        private final static String XLSX = "xlsx";  
        /**
         * 分隔符
         */  
        private final static String SEPARATOR = ":";  
     
        /**
         * 由Excel文件的Sheet导出至List
         *  
         * @param file
         * @param sheetNum
         * @return
         */  
        public static List<String> exportListFromExcel(File file, int sheetNum,int cellNum)  
                throws IOException {  
            return exportListFromExcel(new FileInputStream(file), FilenameUtils.getExtension(file.getName()), sheetNum,cellNum);  
        }  
        
     
        /**
         * 由Excel流的Sheet导出至List
         *  
         * @param is
         * @param extensionName
         * @param sheetNum
         * @return
         * @throws IOException
         */  
        public static List<String> exportListFromExcel(InputStream is,  
                String extensionName, int sheetNum,int cellNum) throws IOException {  
     
            Workbook workbook = null;  
     
            if (extensionName.toLowerCase().equals(XLS)) {  
                workbook = new HSSFWorkbook(is);  
            } else if (extensionName.toLowerCase().equals(XLSX)) {
                workbook = new XSSFWorkbook(is);  
            }  
     
            return exportListFromExcel(workbook, sheetNum,cellNum);  
        }  
     
        /**
         * 由指定的Sheet导出至List
         *  
         * @param workbook
         * @param sheetNum
         * @return
         * @throws IOException
         */  
        private static List<String> exportListFromExcel(Workbook workbook,  
                int sheetNum,int cellNum) {  
            Sheet childSheet = workbook.getSheetAt(sheetNum);  
            List<String> list = new ArrayList<String>();  
            for (int j = 0; j <= childSheet.getLastRowNum(); j++) {  
                HSSFRow row = (HSSFRow) childSheet.getRow(j);  
               StringBuilder sb = new StringBuilder();  
                if (null != row) {  
                    for (int k = 0; k < row.getLastCellNum(); k++) {  
                        HSSFCell cell = row.getCell(k);  
                        if (null != cell) {  
                            switch (cell.getCellType()) {  
                            case HSSFCell.CELL_TYPE_NUMERIC: // 数字  
                                cell.setCellType(HSSFCell.CELL_TYPE_STRING);
                              sb.append(getContent(cell.getStringCellValue()) + ""+SEPARATOR);  
                                break;  
                            case HSSFCell.CELL_TYPE_STRING: // 字符串  
                                if(StringUtils.isNotEmpty((cell.getStringCellValue()) ))
                                sb.append(getContent(cell.getStringCellValue()) + "" +SEPARATOR);  
                                else
                                    sb.append("  "+SEPARATOR);  
                                break;  
                            case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean  
                                sb.append(cell.getBooleanCellValue() + ""+SEPARATOR);  
                                break;  
                            case HSSFCell.CELL_TYPE_FORMULA: // 公式  
                                sb.append(cell.getCellFormula() + ""+SEPARATOR);  
                                break;  
                            case HSSFCell.CELL_TYPE_BLANK: // 空值  
                                sb.append("   "+SEPARATOR);  
                                break;  
                            case HSSFCell.CELL_TYPE_ERROR: // 故障  
                                sb.append("  "+SEPARATOR);  
                                break;  
                            default:  
                                sb.append("未知类型   ");  
                                break;  
                            }  
                        } else {  
                              sb.append("   "+SEPARATOR);  
                        }  
                    }  
                }
                if( row.getLastCellNum()<cellNum){
                    for(int i =0;i<cellNum-row.getLastCellNum();i++){
                        sb.append("   "+SEPARATOR);  
                    }
                }
                list.add(sb.toString());
            }
            return list;  
        }  
        public static String getContent(String string){
            if(string==null){
                return " ";
            }
            string=string.replaceAll("\s+", "");
            string=string.replaceAll(" ","");
            string=string.replaceAll("'","");
            string=string.replaceAll(""","");
            string=string.replaceAll(";","");
            string=string.replaceAll(":","");
            string=string.trim();
            return string;
        }

  • 相关阅读:
    SpringBoot入门学习(二)
    SpringBoot入门学习(一)
    eclipse调试程序界面简单介绍使用
    利用URLConnection来发送POST和GET请求
    查看用户所属的组
    linux下创建用户,给用户设置密码,给用户授权
    新linux系统上rz 与sz命令不可用
    pom.xml文件报错:web.xml is missing and <failOnMissingWebXml> is set to true
    MySql采用GROUP_CONCAT合并多条数据显示的方法
    Mysql计算时间差
  • 原文地址:https://www.cnblogs.com/damaoge/p/4195658.html
Copyright © 2011-2022 走看看