2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > java读取excel某个单元格的值_java poi怎么获取excel单元格的内容

java读取excel某个单元格的值_java poi怎么获取excel单元格的内容

时间:2022-10-06 12:52:04

相关推荐

java读取excel某个单元格的值_java poi怎么获取excel单元格的内容

展开全部

packageedu.sjtu.erplab.poi;

importjava.io.InputStream&ch=ww.xqy.chain"target="_blank"class="link-baike">FileInputStream;

importjava.io.FileNotFoundException;

importjava.io.IOException;

importjava.io.InputStream;

importjava.text.SimpleDateFormat;

importjava.util.Date;

importjava.util.HashMap;

importjava.util.Map;

importorg.apache.poi.hssf.usermodel.HSSFCell;

importorg.apache.poi.hssf.usermodel.HSSFDateUtil;

importorg.apache.poi.hssf.usermodel.HSSFRow;

importorg.apache.poi.hssf.usermodel.HSSFSheet;

importorg.apache.poi.hssf.usermodel.HSSFWorkbook;

importorg.apache.poi.poifs.filesystem.POIFSFileSystem;

/**

*操作Excel表格的功能类

*/

publicclassExcelReader{

privatePOIFSFileSystemfs;

privateHSSFWorkbookwb;

privateHSSFSheetsheet;

privateHSSFRowrow;

/**

*读取Excel表格表头的内容

*@32313133353236313431303231363533e78988e69d8331333365643662paramInputStream

*@returnString表头内容的数组

*/

publicString[]readExcelTitle(InputStreamis){

try{

fs=newPOIFSFileSystem(is);

wb=newHSSFWorkbook(fs);

}catch(IOExceptione){

e.printStackTrace();

}

sheet=wb.getSheetAt(0);

row=sheet.getRow(0);

//标题总列数

intcolNum=row.getPhysicalNumberOfCells();

System.out.println("colNum:"+colNum);

String[]title=newString[colNum];

for(inti=0;i

//title[i]=getStringCellValue(row.getCell((short)i));

title[i]=getCellFormatValue(row.getCell((short)i));

}

returntitle;

}

/**

*读取Excel数据内容

*@paramInputStream

*@returnMap包含单元格数据内容的Map对象

*/

publicMapreadExcelContent(InputStreamis){

Mapcontent=newHashMap();

Stringstr="";

try{

fs=newPOIFSFileSystem(is);

wb=newHSSFWorkbook(fs);

}catch(IOExceptione){

e.printStackTrace();

}

sheet=wb.getSheetAt(0);

//得到总行数

introwNum=sheet.getLastRowNum();

row=sheet.getRow(0);

intcolNum=row.getPhysicalNumberOfCells();

//正文内容应该从第二行开始,第一行为表头的标题

for(inti=1;i<=rowNum;i++){

row=sheet.getRow(i);

intj=0;

while(j

//每个单元格的数据内容用"-"分割开,以后需要时用String类的replace()方法还原数据

//也可以将每个单元格的数据设置到一个javabean的属性中,此时需要新建一个javabean

//str+=getStringCellValue(row.getCell((short)j)).trim()+

//"-";

str+=getCellFormatValue(row.getCell((short)j)).trim()+"";

j++;

}

content.put(i,str);

str="";

}

returncontent;

}

/**

*获取单元格数据内容为字符串类型的数据

*

*@paramcellExcel单元格

*@returnString单元格数据内容

*/

privateStringgetStringCellValue(HSSFCellcell){

StringstrCell="";

switch(cell.getCellType()){

caseHSSFCell.CELL_TYPE_STRING:

strCell=cell.getStringCellValue();

break;

caseHSSFCell.CELL_TYPE_NUMERIC:

strCell=String.valueOf(cell.getNumericCellValue());

break;

caseHSSFCell.CELL_TYPE_BOOLEAN:

strCell=String.valueOf(cell.getBooleanCellValue());

break;

caseHSSFCell.CELL_TYPE_BLANK:

strCell="";

break;

default:

strCell="";

break;

}

if(strCell.equals("")||strCell==null){

return"";

}

if(cell==null){

return"";

}

returnstrCell;

}

/**

*获取单元格数据内容为日期类型的数据

*

*@paramcell

*Excel单元格

*@returnString单元格数据内容

*/

privateStringgetDateCellValue(HSSFCellcell){

Stringresult="";

try{

intcellType=cell.getCellType();

if(cellType==HSSFCell.CELL_TYPE_NUMERIC){

Datedate=cell.getDateCellValue();

result=(date.getYear()+1900)+"-"+(date.getMonth()+1)

+"-"+date.getDate();

}elseif(cellType==HSSFCell.CELL_TYPE_STRING){

Stringdate=getStringCellValue(cell);

result=date.replaceAll("[年月]","-").replace("日","").trim();

}elseif(cellType==HSSFCell.CELL_TYPE_BLANK){

result="";

}

}catch(Exceptione){

System.out.println("日期格式不正确!");

e.printStackTrace();

}

returnresult;

}

/**

*根据HSSFCell类型设置数据

*@paramcell

*@return

*/

privateStringgetCellFormatValue(HSSFCellcell){

Stringcellvalue="";

if(cell!=null){

//判断当前Cell的Type

switch(cell.getCellType()){

//如果当前Cell的Type为NUMERIC

caseHSSFCell.CELL_TYPE_NUMERIC:

caseHSSFCell.CELL_TYPE_FORMULA:{

//判断当前的cell是否为Date

if(HSSFDateUtil.isCellDateFormatted(cell)){

//如果是Date类型则,转化为Data格式

//方法1:这样子的data格式是带时分秒的:-10-120:00:00

//cellvalue=cell.getDateCellValue().toLocaleString();

//方法2:这样子的data格式是不带带时分秒的:-10-12

Datedate=cell.getDateCellValue();

SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");

cellvalue=sdf.format(date);

}

//如果是纯数字

else{

//取得当前Cell的数值

cellvalue=String.valueOf(cell.getNumericCellValue());

}

break;

}

//如果当前Cell的Type为STRIN

caseHSSFCell.CELL_TYPE_STRING:

//取得当前的Cell字符串

cellvalue=cell.getRichStringCellValue().getString();

break;

//默认的Cell值

default:

cellvalue="";

}

}else{

cellvalue="";

}

returncellvalue;

}

publicstaticvoidmain(String[]args){

try{

//对读取Excel表格标题测试

InputStreamis=newFileInputStream("d:\\test2.xls");

ExcelReaderexcelReader=newExcelReader();

String[]title=excelReader.readExcelTitle(is);

System.out.println("获得Excel表格的标题:");

for(Strings:title){

System.out.print(s+"");

}

//对读取Excel表格内容测试

InputStreamis2=newFileInputStream("d:\\test2.xls");

Mapmap=excelReader.readExcelContent(is2);

System.out.println("获得Excel表格的内容:");

for(inti=1;i<=map.size();i++){

System.out.println(map.get(i));

}

}catch(FileNotFoundExceptione){

System.out.println("未找到指定路径的文件!");

e.printStackTrace();

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。