Java解析Excel内容的方法
本文实例讲述了Java解析Excel内容的方法。分享给大家供大家参考。具体实现方法如下:
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.InputStream;
importjava.util.ArrayList;
importorg.apache.poi.hssf.usermodel.HSSFWorkbook;
importorg.apache.poi.ss.usermodel.Cell;
importorg.apache.poi.ss.usermodel.Row;
importorg.apache.poi.ss.usermodel.Sheet;
importorg.apache.poi.ss.usermodel.Workbook;
importorg.apache.poi.xssf.usermodel.XSSFWorkbook;
publicclassTest{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
meetquery("403","e:\\Excel\\1火灾三级预案处置流程.xlsx");
}
privatestaticArrayList<MeetBean>meetquery(Stringlevel,Stringfilename){
ArrayList<MeetBean>list=newArrayList<MeetBean>();
try{
Filefile=newFile(filename);
InputStreamis=newFileInputStream(file);
Workbookworkbook=null;//一个workbook对象,就是一个Excel文件
Sheetsheet=null;//sheet页,因excel总有多个sheet页,需要判断具体取值哪一个
Rowrow1=null;//Sheet页数中的某一行
intcolNum=0;//Sheet总行数
Cellcell=null;//第一列内容
Cellcell1=null;//第二列内容
Stringmeetname=null;//要点名称
Stringmeetid=null;//要点编号
Stringmeethine=null;//要点提示内容
Stringmeettime=null;//处置时间
MeetBeanmeet=null;
//判断文件是什么格式2003/2007根据版本不同处置对象也不同
if(filename.endsWith(".xls")){
workbook=newHSSFWorkbook(is);//Excel2003
}elseif(filename.endsWith(".xlsx")){
workbook=newXSSFWorkbook(is);//Excel2007
}else{
returnnull;
}
//判断处理那个Sheet页,共有三个用户,分别处置不同的处置要点
if(level=="401"){
//值班站长的处置要点内容、处置提示
sheet=workbook.getSheetAt(0);
colNum=sheet.getLastRowNum();//总行数不包括标题内容
System.out.println("共有:"+colNum+"行");
for(inti=3;i<=colNum;i++){
meet=newMeetBean();
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("")){
Stringintstr=String
.valueOf((int)(Math.random()*10+1));//生成1-10的随机数
//如果是1-9随机数,则需要自动补零时间格式为00:00:00
if(intstr.length()<2){
Stringmin="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{
returnlist;
}
}else{
returnlist;
}
}
}elseif(level=="402"){
sheet=workbook.getSheetAt(1);//OCC调度员的处置要点内容、处置提示
colNum=sheet.getLastRowNum();//总行数不包括标题内容
System.out.println("共有:"+colNum+"行");
for(inti=3;i<=colNum;i++){
meet=newMeetBean();
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("")){
Stringintstr=String
.valueOf((int)(Math.random()*10+1));//生成1-10的随机数
//如果是1-9随机数,则需要自动补零时间格式为00:00:00
if(intstr.length()<2){
Stringmin="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{
returnlist;
}
}else{
returnlist;
}
}
}elseif(level=="403"){
sheet=workbook.getSheetAt(2);//控制中心的处置要点内容、处置提示
colNum=sheet.getLastRowNum();//总行数不包括标题内容
System.out.println("共有:"+colNum+"行");
intnameInt=0;
inthineInt=0;
for(intj=0;j<=colNum;j++){
row1=sheet.getRow(3);//要解析的行数只有第三行中存在处置要点名称,提示内容
cell=row1.getCell((short)1);//要解析要点名称的列数
cell1=row1.getCell((short)2);//要解析要点提示内容的列数
}
for(inti=3;i<=colNum;i++){
meet=newMeetBean();
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("")){
Stringintstr=String
.valueOf((int)(Math.random()*10+1));//生成1-10的随机数
//如果是1-9随机数,则需要自动补零时间格式为00:00:00
if(intstr.length()<2){
Stringmin="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{
returnlist;
}
}else{
returnlist;
}
}
}
is.close();
}catch(Exceptione){
e.printStackTrace();
}
returnlist;
}
}
希望本文所述对大家的java程序设计有所帮助。