1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 有什么软件可以随意提取Excel表格中的数据? – 网络

有什么软件可以随意提取Excel表格中的数据? – 网络

时间:2023-01-25 03:26:42

相关推荐

有什么软件可以随意提取Excel表格中的数据? – 网络

下载POI4.1.0:

/dyn/closer.lua/poi/release/bin/poi-bin-4.1.0-0412.zip

并将jar包导入项目工程。

实现代码:

publicclassExcelOperate{

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

*/

publicstaticString[][]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处理后的字符串

*/

publicstaticStringrightTrim(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);

}

}

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