问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

poi读取excel需要做哪些操作

发布网友 发布时间:2022-04-21 13:01

我来回答

1个回答

热心网友 时间:2023-07-12 21:32

package com.scpii.ent.util;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
 
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.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 
import com.scpii.ent.mode.bean.DataSet;
 
public class ExcelOperClass {
    private static String EXCEL_2003 = ".xls";
    private static String EXCEL_2007 = ".xlsx";
 
    public static void readExcelJXL() {
 
    }
 
    /**
     * 通过POI方式读取Excel
     * 
     * @param excelFile
     */
    public static DataSet readExcelPOI(String filePath, Integer cons) throws Exception {
        File excelFile = new File(filePath);
        if (excelFile != null) {
            String fileName = excelFile.getName();
            fileName = fileName.toLowerCase();
            if (fileName.toLowerCase().endsWith(EXCEL_2003)) {
                DataSet dataSet = readExcelPOI2003(excelFile, cons);
                return dataSet;
            }
            if (fileName.toLowerCase().endsWith(EXCEL_2007)) {
                DataSet dataSet = readExcelPOI2007(excelFile, cons);
                return dataSet;
            }
        }
        return null;
    }
 
    /**
     * 读取Excel2003的表单
     * 
     * @param excelFile
     * @return
     * @throws Exception
     */
    private static DataSet readExcelPOI2003(File excelFile, Integer rCons)
            throws Exception {
        List<String[]> datasList = new ArrayList<String[]>();
        Set<String> colsSet = new HashSet<String>();
        InputStream input = new FileInputStream(excelFile);
        HSSFWorkbook workBook = new HSSFWorkbook(input);
        // 获取Excel的sheet数量
        Integer sheetNum = workBook.getNumberOfSheets();
        // 循环Sheet表单
        for (int i = 0; i < sheetNum; i++) {
            HSSFSheet sheet = workBook.getSheetAt(i);
            if (sheet == null) {
                continue;
            }
            // 获取Sheet里面的Row数量
            Integer rowNum = sheet.getLastRowNum() + 1;
            for (int j = 0; j < rowNum; j++) {
                 if (j>rCons) {
                    System.out.println("===========");
                    HSSFRow row = sheet.getRow(j);
                    if (row == null) {
                        continue;
                    }
 
                    Integer cellNum = row.getLastCellNum() + 1;
                    String[] datas = new String[cellNum];
                    for (int k = 0; k < cellNum; k++) {
                        HSSFCell cell = row.getCell(k);
                        if (cell == null) {
                            continue;
                        }
                        if (cell != null) {
                            cell.setCellType(HSSFCell.CELL_TYPE_STRING);
                            String cellValue = "";
                            int cellValueType = cell.getCellType();
                            if (cellValueType == cell.CELL_TYPE_STRING) {
                                cellValue = cell.getStringCellValue();
                            }
                            if (cellValueType == cell.CELL_TYPE_NUMERIC) {
                                Double number = cell.getNumericCellValue();
                                 
                                System.out.println("字符串+++=========="+number.intValue());
                                cellValue = cell.getNumericCellValue() + "";
                            }
 
                            if (rCons==k) {
                                colsSet.add(cellValue);
                            }
 
                            System.out.println(cellValue);
                            datas[k] = cellValue;
                        }
                    }
                    datasList.add(datas);
                }
            }
        }
        DataSet dataSet = new DataSet(null, null, datasList, colsSet);
        return dataSet;
    }
 
    /**
     * 读取Excel2007的表单
     * 
     * @param excelFile
     * @return
     * @throws Exception
     */
    private static DataSet readExcelPOI2007(File excelFile, Integer rCons) throws Exception {
        List<String[]> datasList = new ArrayList<String[]>();
        Set<String> cosSet = new HashSet<String>();
        InputStream input = new FileInputStream(excelFile);
        XSSFWorkbook workBook = new XSSFWorkbook(input);
        // 获取Sheet数量
        Integer sheetNum = workBook.getNumberOfSheets();
        for (int i = 0; i < sheetNum; i++) {
            XSSFSheet sheet = workBook.getSheetAt(i);
            if (sheet == null) {
                continue;
            }
            // 获取行值
            Integer rowNum = sheet.getLastRowNum() + 1;
            for (int j = 0; j < rowNum; j++) {
                if (j > rCons) {
                    System.out.println("=============");
                    XSSFRow row = sheet.getRow(j);
                    if (row == null) {
                        continue;
                    }
                    Integer cellNum = row.getLastCellNum() + 1;
                    String[] datas = new String[cellNum];
                    for (int k = 0; k < cellNum; k++) {
                        XSSFCell cell = row.getCell(k);
                        if (cell==null) {
                            continue;
                        }
                        if (cell != null) {
                            cell.setCellType(XSSFCell.CELL_TYPE_STRING);
                            String cellValue = "";
                            int cellValueType = cell.getCellType();
                            if (cellValueType == cell.CELL_TYPE_STRING) {
                                cellValue = cell.getStringCellValue();
                            }
                            if (cellValueType == cell.CELL_TYPE_NUMERIC) {
                                Double number = cell.getNumericCellValue();
                                System.out.println("字符串+++=========="+number.toString());
                                cellValue = cell.getNumericCellValue() + "";
                            }
                            System.out.println(cellValue);
                            if (rCons == k) {
                                cosSet.add(cellValue);
                            }
                            datas[k] = cellValue;
                        }
                    }
                    datasList.add(datas);
                }
            }
        }
        DataSet dataSet = new DataSet(null, null, datasList,cosSet);
        return dataSet;
    }
 
    public static void main(String[] args) {
        try {
            DataSet dataSet = readExcelPOI("D:\\部门员工资料.xls", 0);
            System.out.println("================================");
            Set<String> datas = dataSet.getConStrctSet();
            String[] datastr = new String[datas.size()];
            datastr = datas.toArray(datastr);
            for (int i = 0; i < datastr.length; i++) {
                System.out.println(datastr[i]);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑docx怎么转换成word文档电脑上docx格式文件转换方法 电脑白屏是怎么回事啊。??? 电脑开机花屏渐渐地白屏了显示器突然白屏花屏的原因及解决方法_百度知 ... iphone录屏失败因为5823什么意思_iphone录屏失败提示5823代表什么意思... 软考中级:信息安全工程师 求大神解答打印机如何设置默认双面打印 如何更改打印机的打印格式? 经期同房月经没了会怀孕吗 iphone8p轻触解锁设置 宝沃bx5300公里多少油钱 POI 读取excel 用户名指的是什么? 华为畅享10如何开2个录音权限? 华为怎么设置通话录音权限 华为mate40pro手机录音权限怎么开 微信名称和有什么区别 一方银行卡号错误,转账的一方资金会被冻结吗? 在工行转账卡号填错了,钱多久会退回来。 转账转错卡号了怎么能追回 转账时写错卡号钱多久可以退回 转账时姓名对了卡号错了能退回来吗 404 Not Found 银行卡卡号输错一位能转账成功吗? 卡号错了转账多久退回 跨行转账卡号错了但姓名是对的怎么办? 手机转账的时候名字对卡号错了,钱能退回来吗? 请问我跨行转账时卡号写错了,姓名对了,但是我显示已经转账成功了,这种情况是钱已经转走了吗? 为什么iqooneo充电有时不显示flashcharge太可怕了 iqooneo5充电为什么变慢了? poi怎么从excel读取数据 poi读取excel文件内容 java poi怎么获取excel单元格的内容 Java POI读取Excel的时候怎么按列读取 手机微信双开怎么弄 POI 如何读取EXcel表,之后如何存入List集合中。 poi读取excel 列宽 怎么双开微信 如何用Apache POI读取Excel poi 怎样读取Excel中的复选框的值??? 手机怎么设置双微信 如何使用POI 的“事件模型Event API”读取excel数据 微信怎么开双开 java poi 读取Excel数据,Excel表格格式不一 如何用Apache POI读取Excel 如何将word文档的身份证号码转换到excel文档 poi读取Excel时,如果单元格设置的是数字格式,如何解决整数与小数问题 word文档中身份证号码怎样复制到电子表格 Java使用poi读取excel的时候出现这种情况是怎么回事 大量身份证号码如何从word中粘贴到excel中?