首页 文章资讯内容详情

Java读取Excel内容

2026-06-01 4 花语

本文内容纲要:

借助于apathe的poi.jar,由于上传文件不支持.jar所以请下载后将文件改为.jar,在应用程序中添加poi.jar包,并将需要读取的excel文件放入根目录即可

本例使用java来读取excel的内容并展出出结果,代码如下:

importjava.io.BufferedInputStream;

importjava.io.File;

importjava.io.FileInputStream;

importjava.io.FileNotFoundException;

importjava.io.IOException;

importjava.text.DecimalFormat;

importjava.text.SimpleDateFormat;

importjava.util.ArrayList;

importjava.util.Arrays;

importjava.util.Date;

importjava.util.List;

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;

public****classExcelOperate{

publicstaticvoidmain(String[]args)throwsException{

Filefile=newFile("ExcelDemo.xls");

String[][]result=getData(file,1);

introwLength=result.length;

for(inti=0;i<rowLength;i++){

for(intj=0;j<result[i].length;j++){

System.out.print(result[i][j]+"\t\t");

}

System.out.println();

}

}

/**

*读取Excel的内容,第一维数组存储的是一行中格列的值,二维数组存储的是多少个行

*@paramfile读取数据的源Excel

*@paramignoreRows读取数据忽略的行数,比喻行头不需要读入忽略的行数为1

*@return读出的Excel中数据的内容

*@throwsFileNotFoundException

*@throwsIOException

*/

public****staticString[][]getData(Filefile,intignoreRows)

throwsFileNotFoundException,IOException{

List<String[]>result=newArrayList<String[]>();

introwSize=0;

BufferedInputStreamin=newBufferedInputStream(newFileInputStream(

file));

//打开HSSFWorkbook

POIFSFileSystemfs=newPOIFSFileSystem(in);

HSSFWorkbookwb=newHSSFWorkbook(fs);

HSSFCellcell=null;

for(intsheetIndex=0;sheetIndex<wb.getNumberOfSheets();sheetIndex++){

HSSFSheetst=wb.getSheetAt(sheetIndex);

//第一行为标题,不取

for(introwIndex=ignoreRows;rowIndex<=st.getLastRowNum();rowIndex++){

HSSFRowrow=st.getRow(rowIndex);

if(row==null){

continue;

}

inttempRowSize=row.getLastCellNum()+1;

if(tempRowSize>rowSize){

rowSize=tempRowSize;

}

String[]values=newString[rowSize];

Arrays.fill(values,"");

booleanhasValue=false;

for(shortcolumnIndex=0;columnIndex<=row.getLastCellNum();columnIndex++){

Stringvalue="";

cell=row.getCell(columnIndex);

if(cell!=null){

//注意:一定要设成这个,否则可能会出现乱码

cell.setEncoding(HSSFCell.ENCODING_UTF_16);

switch(cell.getCellType()){

caseHSSFCell.CELL_TYPE_STRING:

value=cell.getStringCellValue();

break;

caseHSSFCell.CELL_TYPE_NUMERIC:

if(HSSFDateUtil.isCellDateFormatted(cell)){

Datedate=cell.getDateCellValue();

if(date!=null){

value=newSimpleDateFormat("yyyy-MM-dd")

.format(date);

}else{

value="";

}

}else{

value=newDecimalFormat("0").format(cell

.getNumericCellValue());

}

break;

caseHSSFCell.CELL_TYPE_FORMULA:

//导入时如果为公式生成的数据则无值

if(!cell.getStringCellValue().equals("")){

value=cell.getStringCellValue();

}else{

value=cell.getNumericCellValue()+"";

}

break;

caseHSSFCell.CELL_TYPE_BLANK:

break;

caseHSSFCell.CELL_TYPE_ERROR:

value="";

break;

caseHSSFCell.CELL_TYPE_BOOLEAN:

value=(cell.getBooleanCellValue()==true?"Y"

:"N");

break;

default:

value="";

}

}

if(columnIndex==0&&value.trim().equals("")){

break;

}

values[columnIndex]=rightTrim(value);

hasValue=true;

}

if(hasValue){

result.add(values);

}

}

}

in.close();

String[][]returnArray=newString[result.size()][rowSize];

for(inti=0;i<returnArray.length;i++){

returnArray[i]=(String[])result.get(i);

}

returnreturnArray;

}

/**

*去掉字符串右边的空格

*@paramstr要处理的字符串

*@return处理后的字符串

*/

public****staticStringrightTrim(Stringstr){

if(str==null){

return"";

}

intlength=str.length();

for(inti=length-1;i>=0;i--){

if(str.charAt(i)!=0x20){

break;

}

length--;

}

returnstr.substring(0,length);

}

}

本文内容总结:

原文链接:https://www.cnblogs.com/gmq/archive/2009/07/11/1521496.html