POI操作Excel详解,读取xls和xlsx格式的文件

package org.ian.webutil;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStream;

import jxl.Cell;

import jxl.Sheet;

import jxl.Workbook;

import jxl.read.biff.BiffException;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

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;

public class ReadExcel {

    private static final Log log = LogFactory.getLog(ReadExcel.class);

    

    /**

     * 判断后缀分批入

     */

    private static void parseSUCCEXX(String realPath,String fileName){

        

        String [] pfix= fileName.split("\\.");

        String suffix = pfix[pfix.length -1];

        

        if( suffix!=null&&!suffix.equals("")&&suffix.equals("xls")){

            

            System.out.println("xls");

            // jxl方法可读取.xls格式

            jlxExcel(realPath,fileName);

        }else if(suffix .equals("xlsx")){

            

            System.out.println("xlsx");

            // poi方法可读取Excel2007即.xlsx格式

            poiExcel(realPath,fileName);

        }

    }

    

    /**

     * 读取 xls JXL

     * @param realPath

     * @param fileName

     */

    private static void jlxExcel(String realPath,String fileName){

            //===============jlx方法=================

            try{

            File fileDes = new File(realPath);

            InputStream str = new FileInputStream(fileDes);

            // 构造Workbook(工作薄)对象

            Workbook rwb=Workbook.getWorkbook(str);

            Sheet rs=rwb.getSheet(0);//获取第一张工作表

            int rsRows=rs.getRows();//获取Sheet表中所包含的总行数

            int rsCols=rs.getColumns();//获取Sheet表中所包含的总列数

            log.info("========行========"+rsRows+"=====列========"+rsCols);

            for(int i=1;i<rsRows;i++){//读取行

                log.info("========执行第========"+i+"行");

                for(int j=0;j<rsCols;j++){

                    log.info("========执行第========"+j+"列");

                    Cell coo=rs.getCell(j, i);//单元格定位列,再定位行

                    log.info("========coo========"+coo);

                    String strc=coo.getContents();//读取内容

                    log.info("========读取内容strc========"+strc);

                    System.out.println("文件"+fileName+"的内容为:"+strc);

                }

            }

            rwb.close(); 

            }catch (FileNotFoundException e) {  

                 e.printStackTrace();  

            } catch (BiffException e) {  

             e.printStackTrace();  

            } catch (IOException e) {  

             e.printStackTrace();  

            }  

                

            //==========读取excel文件内容=结束=====================

            

    }

    

    /**

     * POI读取   xlsx

     * @param realPath

     * @param fileName

     */

    private static void poiExcel(String realPath,String fileName){

        try{

            File fileDes = new File(realPath);

            InputStream str = new FileInputStream(fileDes);

            XSSFWorkbook xwb = new XSSFWorkbook(str);  //利用poi读取excel文件流

            XSSFSheet st = xwb.getSheetAt(0);  //读取sheet的第一个工作表

            int rows=st.getLastRowNum();//总行数

            int cols;//总列数

            log.info("========行========"+rows);

            for(int i=0;i<rows;i++){

                XSSFRow row=st.getRow(i);//读取某一行数据

                if(row!=null){

                    //获取行中所有列数据

                    cols=row.getLastCellNum();

                    log.info("========行========"+rows+"=====列========"+cols);

                for(int j=0;j<cols;j++){

                    XSSFCell cell=row.getCell(j);

                    if(cell==null){

                        System.out.print("   "); 

                    }else{

                    //判断单元格的数据类型

                    switch (cell.getCellType()) { 

                        case XSSFCell.CELL_TYPE_NUMERIC: // 数字 

                            System.out.print(cell.getNumericCellValue() + "   "); 

                            break

                        case XSSFCell.CELL_TYPE_STRING: // 字符串 

                            System.out.print(cell.getStringCellValue() + "   "); 

                            break

                        case XSSFCell.CELL_TYPE_BOOLEAN: // Boolean 

                            System.out.println(cell.getBooleanCellValue() + "   "); 

                            break

                        case XSSFCell.CELL_TYPE_FORMULA: // 公式 

                            System.out.print(cell.getCellFormula() + "   "); 

                            break

                        case XSSFCell.CELL_TYPE_BLANK: // 空值 

                            System.out.println(""); 

                            break

                        case XSSFCell.CELL_TYPE_ERROR: // 故障 

                            System.out.println("故障"); 

                            break

                        default

                            System.out.print("未知类型   "); 

                            break

                        

                }

                }

                }

            }

        }catch(IOException e){

            e.printStackTrace();  

        }

        

    }

    

    /**

     * test

     * @param args

     */

    public static void main(String[] args) {

        String fileName = "banShot.xlsx";

        String realPath = "d:/"+fileName;

        

        parseSUCCEXX(realPath, fileName);

        

    }

}

时间: 2025-01-31 15:11:54

POI操作Excel详解,读取xls和xlsx格式的文件的相关文章

POI操作Excel详解,HSSF和XSSF两种方式

HSSF方式: package com.tools.poi.lesson1; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.

【转:POI操作Excel详解,HSSF和XSSF两种方式】

HSSF方式: package com.tools.poi.lesson1; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.

POI操作Excel(xls、xlsx)

阿帕奇官网:http://poi.apache.org/ POI3.17下载:http://poi.apache.org/download.html#POI-3.17 POI操作Excel教程(易百教程):https://www.yiibai.com/apache_poi/ 1.数据库连接:https://www.cnblogs.com/feipengting/p/7606042.html 1 package com.gdin.util; 2 3 import java.io.InputStre

java使用Apache POI操作excel文件

官方介绍 HSSF is the POI Project's pure Java implementation of the Excel '97(-2007) file format. XSSF is the POI Project's pure Java implementation of the Excel 2007 OOXML (.xlsx) file format. 从官方文档中了解到:POI提供的HSSF包用于操作 Excel '97(-2007)的.xls文件,而XSSF包则用于操作

java使用POI操作excel文件,实现批量导出,和导入

一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Excel 95及以后的版本,即可操作后缀为 .xls 和 .xlsx两种格式的excel. POI全称 Poor Obfuscation Implementation,直译为"可怜的模糊实现",利用POI接口可以通过JAVA操作Microsoft office 套件工具的读写功能.官网:htt

java通过POI技术操作Excel(2)----模板读取,录入数据

先来回顾下通常把java对Excel的操作分为以下功能:1.生成模板,导出模板:2.填充模板,录入数据:3:读取数据库数据,导出数据:在上一篇博文中,我简单记录了模板生成和导出,在这篇博文中,主要来记录--Excel文件导入,数据录入(仍然是以jsp+servlet为例) 既然要解决这个问题,那首先来分析下我们需要面对的有哪些需求需要实现: 1.Excel文件导入(这是最基础的,巧妇难为无米之炊,导入环节也是查了好久才完成的); 2.Excel文件中数据的格式判定,你要读取文件,如果文件中其实没

JAVA使用POI操作excel

这里提一下,java操作excel的组件除了apache的poi,还有jexcelapi(jxl),其中poi组件的获取地址为poi.apache.org. poi组件中常用的类有HSSFworkbook表示一个完整的excel表格,HSSFsheet表示excel中的一个工作薄,HSSFRow表示工作薄中的一行,HSSFCell表示一个单元格 下面是一个简单的写入的demo public static void main(String [] args){ try { HSSFWorkbook

第七周作业 POI操作Excel,world文档

先来说说jxl与poi的区别. 相同点都是操作EXcel的工具,但jxl不常用原因有:jxl没有人维护,操作excel效力低下,只支持03及其以前的版本的excel,对图片的支持不完整. 同poi比较而言,poi效率高功能强大,支持xlsx,xls即支持所有的版本.而且操作大数据效率比较高,因为他对大数据的操作做了相应的优化. 下面来个简单地实现:poi操作Excel的功能 简单的单元测试类:实现的功能是向excel文件中写入数据 1 @Test 2 public void test1() th

poi操作Excel工具类

在上一篇文章<使用poi读写Excel>中分享了一下poi操作Excel的简单示例,这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完成的功能是:读取Excel.写入Excel.合并Excel的功能.