Java解析Excel内容的方法
作者:damaolly 发布时间:2023-03-20 20:36:26
标签: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
投稿
猜你喜欢
- 前言Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expe
- 说点对这几个容易混淆的词的理解:1、c++中的virtual方法的 virtual关键字主要是防止继承中重复继承父类的同一个方法而设置的标识
- 前言如今发短信功能已经成为互联网公司的标配,本篇文章将一步步实现java发送短信考察了许多提供短信服务的三方,几乎所有都需要企业认证才可以使
- 前言1.Map里面只能存放对象,不能存放基本类型,例如int,需要使用Integer2.Map集合取出时,如果变量声明了类型,会先进行拆箱,
- 前言之前我们提到了 CustomPaint er 的 Paint 可以使用渐变(GradientShader)来填充绘制的图形,本篇我们来介
- 讲这个例子前,咱们先来看一个简单的程序:字符串数组实现数字转字母:#include <stdio.h>#include <
- Statement 和 PreparedStatement之间的关系和区别. 关系:Prepa
- 本文实例讲述了Android编程之手机壁纸WallPaper设置方法。分享给大家供大家参考,具体如下:/** * Andorid设置手机屏幕
- 一. Thread.yield( )方法:使当前线程从执行状态(运行状态)变为可执行态(就绪状态)。cpu会从众多的可执行态里选择,也就是说
- spring data jpa @query返回map踩坑记录最近用spring data jpa,网上看的一些教程,有的说是返回的Obje
- 由于要做一个新项目,所以打算做一个简单的图片验证码。先说说思路吧:在服务端,从一个文件夹里面找出8张图片,再把8张图片合并成一张大图,在8个
- 第一次写上传图片的代码,碰到很多问题。昨天做了整整一天,终于在晚上的时候成功了。大声欢呼。但是,做完之后,还是有很多问题想不通。所以在这里也
- spring Boot 熟悉后,集成一个外部扩展是一件很容易的事,集成Redis也很简单,看下面步骤配置:一、添加pom依赖
- 1.背景在java语言中还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具有int常量。之前我们通常利用public final s
- 前几天网上突然出现流言:某东发生数据泄露12G,最终某东在一篇声明中没有否认,还算是勉强承认了吧,这件事对于一般人有什么影响、应该怎么做已经
- Java异常层次结构Exception异常RuntimeException与非RuntimeException异常的区别:非RuntimeE
- 阅读提示 具有mybatis基础,熟练使用mybatis-plus。概述 我们都知道,mybatis-plus是一个mybatis的增强
- 一、采用Object.toString()toString方法是java.lang.Object对象的一个public方法。在java中任何
- Java为什么不浪(long)学而时习之不亦说乎,继续温习Java。今天使用switch时,不小心写了如下代码,报错如下。 public s
- 在学会了java中io流的使用后,我们对于数组的排序,又多了一种使用方法。大家知道流处理数据的效率是比较理想的,那么在具体操作数组排序上,很