Java解析Excel内容的方法

本文实例讲述了Java解析Excel内容的方法。分享给大家供大家参考。具体实现方法如下:

代码如下:

import java.io.File; 
import java.io.FileInputStream; 
import java.io.InputStream; 
import java.util.ArrayList; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.ss.usermodel.Cell; 
import org.apache.poi.ss.usermodel.Row; 
import org.apache.poi.ss.usermodel.Sheet; 
import org.apache.poi.ss.usermodel.Workbook; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 
public class Test { 
    /**
     * @param args
     */ 
    public static void main(String[] args) { 
        meetquery("403", "e:\\Excel\\1火灾三级预案处置流程.xlsx"); 
    } 
    private static ArrayList<MeetBean> meetquery(String level, String filename) { 
        ArrayList<MeetBean> list = new ArrayList<MeetBean>(); 
        try { 
            File file = new File(filename); 
            InputStream is = new FileInputStream(file); 
            Workbook workbook = null;// 一个workbook对象,就是一个Excel文件 
            Sheet sheet = null;// sheet页,因excel总有多个sheet页,需要判断具体取值哪一个 
            Row row1 = null;// Sheet页数中的某一行 
            int colNum = 0;// Sheet总行数 
            Cell cell = null;// 第一列内容 
            Cell cell1 = null;// 第二列内容 
            String meetname = null;// 要点名称 
            String meetid = null;// 要点编号 
            String meethine = null;// 要点提示内容 
            String meettime = null;// 处置时间 
            MeetBean meet = null; 
            // 判断文件是什么格式 2003/2007 根据版本不同 处置对象也不同 
            if (filename.endsWith(".xls")) { 
                workbook = new HSSFWorkbook(is);// Excel 2003 
            } else if (filename.endsWith(".xlsx")) { 
                workbook = new XSSFWorkbook(is);// Excel 2007 
            } else { 
                return null; 
            } 
            // 判断处理那个Sheet页,共有三个用户,分别处置不同的处置要点
            if (level == "401") { 
                // 值班站长的处置要点内容、处置提示 
                sheet = workbook.getSheetAt(0); 
                colNum = sheet.getLastRowNum();// 总行数 不包括标题内容 
                System.out.println("共有:" + colNum + "行"); 
                for (int i = 3; i <= colNum; i++) { 
                    meet = new MeetBean(); 
                    row1 = sheet.getRow(i);// 要解析的行数 
                    cell = row1.getCell((short) 2);// 要解析要点名称的列数 
                    cell1 = row1.getCell((short) 4);// 要解析要点提示内容的列数 
                    if (cell != null && cell1 != null) { 
                        meetname = cell.getStringCellValue(); 
                        meethine = cell1.getStringCellValue(); 
                        meetid = "YD" + i; 
                        // 如果处置要点名称为空,则是循环到了最后一个处置要点,则返回。。。 
                        if (!meetname.equals("")) { 
                            String intstr = String 
                                    .valueOf((int) (Math.random() * 10 + 1));// 生成1-10的随机数 
                            // 如果是1-9随机数,则需要自动补零 时间格式为00:00:00 
                            if (intstr.length() < 2) { 
                                String min = "0" + intstr; 
                                meettime = "00:" + min + ":00"; 
                            } else { 
                                meettime = "00:" + intstr + ":00"; 
                            } 
                            meet.setMeetid(meetid);// 处置要点编号 
                            meet.setMeetname(meetname);// 处置要点名称 
                            meet.setMeethint(meethine);// 处置0要点提示内容 
                            meet.setMeettime(meettime);// 处置时间 
                            meet.setMeetLevel("401");// 处置要点级别 
                            list.add(meet); 
                        } else { 
                            return list; 
                        } 
                    } else { 
                        return list; 
                    } 
                } 
            } else if (level == "402") { 
                sheet = workbook.getSheetAt(1);// OCC调度员的处置要点内容、处置提示 
                colNum = sheet.getLastRowNum();// 总行数 不包括标题内容 
                System.out.println("共有:" + colNum + "行"); 
                for (int i = 3; i <= colNum; i++) { 
                    meet = new MeetBean(); 
                    row1 = sheet.getRow(i);// 要解析的行数 
                    cell = row1.getCell((short) 2);// 要解析要点名称的列数 
                    cell1 = row1.getCell((short) 4);// 要解析要点提示内容的列数 
                    if (cell != null && cell1 != null) { 
                        meetname = cell.getStringCellValue(); 
                        meethine = cell1.getStringCellValue(); 
                        meetid = "YD" + i; 
                        // 如果处置要点名称为空,则是循环到了最后一个处置要点,则返回。。。 
                        if (!meetname.equals("")) { 
                            String intstr = String 
                                    .valueOf((int) (Math.random() * 10 + 1));// 生成1-10的随机数 
                            // 如果是1-9随机数,则需要自动补零 时间格式为00:00:00 
                            if (intstr.length() < 2) { 
                                String min = "0" + intstr; 
                                meettime = "00:" + min + ":00"; 
                            } else { 
                                meettime = "00:" + intstr + ":00"; 
                            } 
                            meet.setMeetid(meetid);// 处置要点编号 
                            meet.setMeetname(meetname);// 处置要点名称 
                            meet.setMeethint(meethine);// 处置要点提示内容 
                            meet.setMeettime(meettime);// 处置时间 
                            meet.setMeetLevel("402");// 处置要点级别 
                            list.add(meet); 
                        } else { 
                            return list; 
                        } 
                    } else { 
                        return list; 
                    } 
                } 
            } else if (level == "403") { 
                sheet = workbook.getSheetAt(2);// 控制中心的处置要点内容、处置提示 
                colNum = sheet.getLastRowNum();// 总行数 不包括标题内容 
                System.out.println("共有:" + colNum + "行"); 
                int nameInt = 0; 
                int hineInt = 0; 
                for (int j = 0; j <= colNum; j++) { 
                    row1 = sheet.getRow(3);// 要解析的行数 只有第三行中存在处置要点名称,提示内容 
                    cell = row1.getCell((short) 1);// 要解析要点名称的列数 
                    cell1 = row1.getCell((short) 2);// 要解析要点提示内容的列数 
                } 
                for (int i = 3; i <= colNum; i++) { 
                    meet = new MeetBean(); 
                    row1 = sheet.getRow(i);// 要解析的行数 
                    cell = row1.getCell((short) 1);// 要解析要点名称的列数 
                    cell1 = row1.getCell((short) 2);// 要解析要点提示内容的列数 
                    if (cell != null && cell1 != null) { 
                        meetname = cell.getStringCellValue(); 
                        meethine = cell1.getStringCellValue(); 
                        meetid = "YD" + i; 
                        // 如果处置要点名称为空,则是循环到了最后一个处置要点,则返回。。。 
                        if (!meetname.equals("")) { 
                            String intstr = String 
                                    .valueOf((int) (Math.random() * 10 + 1));// 生成1-10的随机数 
                            // 如果是1-9随机数,则需要自动补零 时间格式为00:00:00 
                            if (intstr.length() < 2) { 
                                String min = "0" + intstr; 
                                meettime = "00:" + min + ":00"; 
                            } else { 
                                meettime = "00:" + intstr + ":00"; 
                            } 
                            meet.setMeetid(meetid);// 处置要点编号 
                            meet.setMeetname(meetname);// 处置要点名称 
                            meet.setMeethint(meethine);// 处置要点提示内容 
                            meet.setMeettime(meettime);// 处置时间 
                            meet.setMeetLevel("403");// 处置要点级别 
                            list.add(meet); 
                        } else { 
                            return list; 
                        } 
                    } else { 
                        return list; 
                    } 
                } 
            }   
            is.close(); 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
        return list; 
    } 
}

希望本文所述对大家的java程序设计有所帮助。

(0)

相关推荐

  • java poi读取excel操作示例(2个代码)

    项目中要求读取excel文件内容,并将其转化为xml格式.常见读取excel文档一般使用POI和JExcelAPI这两个工具.这里我们介绍使用POI实现读取excel文档. 复制代码 代码如下: /* * 使用POI读取EXCEL文件 */import java.io.File;import java.io.FileInputStream;import java.util.ArrayList; import org.apache.poi.hssf.usermodel.HSSFCell;impor

  • 利用java操作Excel文件的方法

    很久以来都想研究一下利用java操作Excel的方法,今天没事,就稍微了解了一下,特总结一下.利用java操作Excel,有个开源的东东-jxl.jar,可以到http://sourceforge.net/projects/jexcelapi/files/下载. 一.读取Excel文件内容 复制代码 代码如下: /** *//**读取Excel文件的内容     * @param file  待读取的文件     * @return     */    public static String

  • java创建excel示例(jxl使用方法)

    使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表.因为是使用 Java编写的,所以我们在Web应用中可以通过JSP.Servlet来调用API实现对Excel数据表的访问. 复制代码 代码如下: package com.yonyou.test; import java.io.File;import java.io.IOException; import jxl.Workbook;import jxl.format.Alignment;import jxl.for

  • java 读取excel内容具体代码

    1. 需要下载jxl.jar包,自己研究了一下,代码如下 复制代码 代码如下: package file;import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.HashMap;import java.util.Map; import jxl.Workbook;import jxl.read.biff.BiffException;import jxl.write.*;im

  • Java使用jxl包写Excel文件适合列宽实现

    注意,这个只是基本可以实现,基本针对中文电子报表. 1.实现思路(1)一般的中文汉字占位长度是英文字母的2倍,"方块字"很统一.(2)对于要写入Excel中的数据统计每一列的最大列宽,最后直接将这一列的列宽设置为这个列的最大值即可. 2.实现代码 复制代码 代码如下: import java.io.File;import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import jav

  • java使用poi读取excel内容方法实例

    复制代码 代码如下: import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.nio.channels.FileChannel;import java.text.DecimalFormat;import java.text.SimpleDat

  • Java使用Apache POI库读取Excel表格文档的示例

    Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能. 项目下载页:http://poi.apache.org/download.html Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API.用它可以使用Java读取和创建,修改MS Excel文件.而且,还可以使用Jav

  • java实现excel导入数据的工具类

    导入Excel数据的工具类,调用也就几行代码,很简单的. 复制代码 代码如下: import jxl.Cell;import jxl.Sheet;import jxl.Workbook;import jxl.read.biff.BiffException;import org.apache.commons.beanutils.BeanUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory; import java.io.IOExc

  • 用javascrpt将指定网页保存为Excel的代码

    function AllAreaExcel(ID) { var oXL = new ActiveXObject("Excel.Application"); var oWB = oXL.Workbooks.Add(); var oSheet = oWB.ActiveSheet; var sel=document.body.createTextRange(); sel.moveToElementText(ID); sel.select(); sel.execCommand("Co

  • Java数据导出功能之导出Excel文件实例

    在编程中经常需要使用到表格(报表)的处理主要以Excel表格为主.下面给出用java写入数据到excel表格方法: 1.添加jar文件 java导入导出Excel文件要引入jxl.jar包,最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件.下载地址:http://www.andykhan.com/jexcelapi/ 2.jxl对Excel表格的认识 可以参见:http://www.jb51.net/article/686

  • Java 使用poi把数据库中数据导入Excel的解决方法

    Java 利用poi把数据库中数据导入Excel 效果: 使用时先把poi包导入工程的path,注意只需要导入poi包即可,下载后有三个jar包 核心代码: 连接数据库:DBConnection.java 复制代码 代码如下: package org.xg.db;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;i

  • java使用poi读取ppt文件和poi读取excel、word示例

    Apache的POI项目可以用来处理MS Office文档,codeplex上还有一个它的.net版本.POI项目可创建和维护操作各种基于OOXML和OLE2文件格式的Java API.大多数MS Office都是OLE2格式的.POI通HSMF子项目来支持Outlook,通过HDGF子项目来支持Visio,通过HPBF子项目来支持Publisher. 使用POI抽取Word简单示例: 要引入poi-3.7.jat和poi-scratchpad-3.7.ajr这两个包. 复制代码 代码如下: p

  • java读取excel文件并复制(copy)文件到指定目录示例

    复制代码 代码如下: mport java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List; import org.apach

  • Java实现操作excel表格

    最近老师布置了个任务,用Java对excel后缀名为xlsx的文件进行简单的增,删,改,查操作:虽说是个简单的程序,可作为刚接触的我来说还是有些磕磕碰碰.不过好在还是完成了,进行一个简单的总结. 首先导入了一个poi.jar 网上有很多这个资源可以下载 XSSFSheet sheet=null; XSSFWorkbook book=null; 一:查  (查找本地指定位置的excel表格,在控制台输出) public void print_excel(){ //获取excel表格的行数 int

  • Java数据导入功能之读取Excel文件实例

    在编程中经常需要使用到表格(报表)的处理主要以Excel表格为主.下面给出用java读取excel表格方法: 1.添加jar文件 java导入导出Excel文件要引入jxl.jar包,最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件.下载地址:http://www.andykhan.com/jexcelapi/ 2.jxl对Excel表格的认识 (1)每个单元格的位置认为是由一个二维坐标(i,j)给定,其中i表示列,j表示

  • java读取word-excel-ppt文件代码

    WORD: import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.poi.hwpf.extractor.WordExtractor; import java.io.File; import java.io.InputStream; import java.io.FileInputStream; import com.search.code.Ind

  • java常用工具类之Excel操作类及依赖包下载

    依赖包下载:http://xiazai.jb51.net/201407/tools/java-excel-dependency(jb51.net).rar Excel工具类ExcelUtil.java源码: package com.itjh.javaUtil; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStr

  • Java读取Excel文件内容的简单实例

    借助于apathe的poi.jar,由于上传文件不支持.jar所以请下载后将文件改为.jar,在应用程序中添加poi.jar包,并将需要读取的excel文件放入根目录即可 本例使用java来读取excel的内容并展出出结果,代码如下: 复制代码 代码如下: import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundExceptio

随机推荐