如何利用java的反射机制读取excel表格数据?这篇文章运用了实例代码展示,代码非常详细,可供感兴趣的小伙伴们参考借鉴,希望对大家有所帮助。

如下excel表格,按照表头名字读取数据,允许表头增加无意义空格,允许表头顺序交换。

序号隧道左公里标隧道右公里标是否隧道1DK2291.416DK0是2DK7389.65DK2291.416否3ZK2277ZK0是4ZK5235.68ZK2277否

excel导入工具类,提取配置表格文件顺序,模糊动态匹配表头名字和顺序。

/****/packagecom.crscd.config.service.cbtc2.atp.excel;importjava.io.FileInputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.lang.reflect.Method;importjava.math.BigDecimal;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Date;importjava.util.List;importjava.util.regex.Matcher;importjava.util.regex.Pattern;importorg.apache.poi.hssf.usermodel.HSSFCell;importorg.apache.poi.hssf.usermodel.HSSFDateUtil;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importorg.apache.poi.hssf.util.HSSFColor;importorg.apache.poi.ss.usermodel.Cell;importorg.apache.poi.ss.usermodel.CellStyle;importorg.apache.poi.ss.usermodel.CellType;importorg.apache.poi.ss.usermodel.DataFormat;importorg.apache.poi.ss.usermodel.Font;importorg.apache.poi.ss.usermodel.HorizontalAlignment;importorg.apache.poi.ss.usermodel.Row;importorg.apache.poi.ss.usermodel.Sheet;importorg.apache.poi.ss.usermodel.Workbook;importorg.apache.poi.ss.util.CellRangeAddress;importorg.apache.poi.xssf.usermodel.XSSFCell;importorg.apache.poi.xssf.usermodel.XSSFColor;importorg.apache.poi.xssf.usermodel.XSSFWorkbook;importorg.springframework.util.StringUtils;importjcifs.smb.SmbFileInputStream;/***@authorZhaoAnan*@param<T>**/publicclassExcelUtils<T>{privateWorkbookworkbook;privateOutputStreamos;privateStringpattern;//日期格式privatefinalstaticStringexcel2003L=".xls";//2003-版本的excelprivatefinalstaticStringexcel2007U=".xlsx";//2007+版本的excelpublicvoidsetPattern(Stringpattern){this.pattern=pattern;}publicvoidExcelUtil(Workbookworkboook){this.workbook=workboook;}/***描述:根据文件后缀,自适应上传文件的版本**@paraminStr将file.getInputStream()获取的输入流*@paramfileNamefile.getOriginalFilename()获取的原文件名*/publicstaticWorkbookgetWorkbook(InputStreaminStr,StringfileName)throwsException{Workbookwb=null;StringfileType=fileName.substring(fileName.lastIndexOf("."));if(excel2003L.equals(fileType)){wb=newHSSFWorkbook(inStr);//2003-}elseif(excel2007U.equals(fileType)){wb=newXSSFWorkbook(inStr);//2007+}else{thrownewException("解析的文件格式有误!");}returnwb;}@OverridepublicStringtoString(){return"共有"+getSheetCount()+"个sheet页!";}publicStringtoString(intsheetIx)throwsIOException{return"第"+(sheetIx+1)+"个sheet页,名称:"+getSheetName(sheetIx)+",共"+getRowCount(sheetIx)+"行!";}/****根据后缀判断是否为Excel文件,后缀匹配xls和xlsx**@parampathname*@return**/publicstaticbooleanisExcel(Stringpathname){if(pathname==null){returnfalse;}returnpathname.endsWith(".xls")||pathname.endsWith(".xlsx");}/****读取Excel第一页所有数据**@return*@throwsException**/publicList<List<String>>read()throwsException{returnread(0,0,getRowCount(0)-1);}/****读取指定sheet页所有数据**@paramsheetIx指定sheet页,从0开始*@return*@throwsException*/publicList<List<String>>read(intsheetIx)throwsException{returnread(sheetIx,0,getRowCount(sheetIx)-1);}/****读取指定sheet页所有<T>数据**@paramsheetIx指定sheet页,从0开始*@return*@throwsException*/publicList<List<T>>readGeneric(intsheetIx,Tt)throwsException{returnreadGeneric(sheetIx,0,getRowCount(sheetIx)-1,t);}/****读取指定sheet页指定行数据**@paramsheetIx指定sheet页,从0开始*@paramstart指定开始行,从0开始*@paramend指定结束行,从0开始*@return*@throwsException*/publicList<List<String>>read(intsheetIx,intstart,intend)throwsException{Sheetsheet=workbook.getSheetAt(sheetIx);List<List<String>>list=newArrayList<List<String>>();if(end>getRowCount(sheetIx)){end=getRowCount(sheetIx);}intcols=sheet.getRow(0).getLastCellNum();//第一行总列数for(inti=start;i<=end;i++){List<String>rowList=newArrayList<String>();Rowrow=sheet.getRow(i);for(intj=0;j<cols;j++){if(row==null){rowList.add(null);continue;}try{if(row.getCell(j).getCellTypeEnum()==CellType.FORMULA){row.getCell(j).setCellType(CellType.STRING);rowList.add(row.getCell(j).getStringCellValue());}else{rowList.add(getCellValueToString(row.getCell(j)));}}catch(Exceptione){rowList.add(getCellValueToString(row.getCell(j)));}}list.add(rowList);}returnlist;}/***获取某sheet某行的数据**@paramsheetIx*@paramrowNum*@paramcolNum*@return*@throwsException*/@SuppressWarnings({"rawtypes","unchecked"})publicListgetRowdata(Rowrow)throwsException{Listlist=newArrayList();intcols=row.getLastCellNum();for(intj=0;j<cols;j++){//list.add(getCellValueToString(row.getCell(j)));//取excel表中公式数据addbygaofan20190618try{if(row.getCell(j).getCellTypeEnum()==CellType.FORMULA){row.getCell(j).setCellType(CellType.STRING);list.add(getCellValueToString(row.getCell(j)));}else{list.add(getCellValueToString(row.getCell(j)));}}catch(Exceptione){list.add(getCellValueToString(row.getCell(j)));}}returnlist;}/****读取指定sheet页指定行<T>数据**@paramsheetIx指定sheet页,从0开始*@paramstart指定开始行,从0开始*@paramend指定结束行,从0开始*@return*@throwsException*/@SuppressWarnings({"rawtypes","unchecked"})publicList<List<T>>readGeneric(intsheetIx,intstart,intend,Tt)throwsException{Sheetsheet=workbook.getSheetAt(sheetIx);List<List<T>>list=newArrayList<List<T>>();if(end>getRowCount(sheetIx)){end=getRowCount(sheetIx);}List<Integer>colNums=newArrayList<Integer>();for(inti=start;i<=end;i++){List<T>rowList=newArrayList<T>();Rowrow=sheet.getRow(i);Listrowdata=getRowdata(row);Classclazz=t.getClass();Objectfa=clazz.newInstance();Methodmethod=t.getClass().getMethod("getLdcode",newClass[]{});String[]ldcode=(String[])method.invoke(fa,newObject[]{});//处理从0行开始取得请求if(0==start){//处理请求的第0行,即表头if(i==0){//通过反射获取模板类的实例try{StringsimpleName=t.getClass().getSimpleName();StringStrEnumClass=simpleName.substring(0,simpleName.length()-5)+"Enum";ClassEnumClass=Class.forName("com.crscd.config.service.cbtc2.atp.excel.enums."+StrEnumClass);//ObjectenumInstance=EnumClass.newInstance();for(intj=0;j<rowdata.size();j++){//去除表头上空格、回车、换行符、制表符if(null!=rowdata.get(j)&&!"".equals(rowdata.get(j))){Patternp=Pattern.compile("\\s*|\t|\r|\n");Stringstr=(String)rowdata.get(j);Matcherm=p.matcher(str);StringexcelData=m.replaceAll("");//获取表头对应的工具类中ldcode位置Methodmet=EnumClass.getMethod("getStatus",String.class);intcol=(int)met.invoke(Object.class,excelData);colNums.add(col);}else{colNums.add(-1);}}}catch(ClassNotFoundExceptione){//e.printStackTrace();}}}for(intj=0;j<colNums.size();j++){intk=j;//如果映射表头列和数据列不匹配,当数据列小于映射表头列时,说明excel有无效列,则不足的列用空串补足if(colNums.size()>rowdata.size()){rowdata.add("");}if(0==start&&!colNums.isEmpty()){k=colNums.get(j);}if(k==-1){continue;}else{try{method=t.getClass().getMethod("set"+ldcode[k],String.class);method.invoke(fa,rowdata.get(j));//如果映射表头列和数据列不匹配,是excel多余无效行列,则越界,仍保留未越界之前的全部数据。}catch(IndexOutOfBoundsExceptione){continue;}}}rowList.add((T)fa);list.add(rowList);}returnlist;}/****读取指定sheet页指定行数据**@paramsheetIx指定sheet页,从0开始*@paramstartRow指定开始行,从0开始*@paramendRow指定结束行,从0开始start=end=0就是第一行*@paramstartCol指定开始列*@paramstartCol指定结束列*@return*@throwsException*/publicList<List<String>>read(intsheetIx,intstartRow,intendRow,intstartCol,intendCols)throwsException{Sheetsheet=workbook.getSheetAt(sheetIx);List<List<String>>list=newArrayList<List<String>>();if(endRow>getRowCount(sheetIx)){endRow=getRowCount(sheetIx);}for(inti=startRow;i<=endRow;i++){List<String>rowList=newArrayList<String>();Rowrow=sheet.getRow(i);for(intj=startCol;j<=endCols;j++){if(row==null){rowList.add(null);continue;}//rowList.add(getCellValue(row.getCell(j)));//取excel表中公式数据addbygaofan20190618try{if(row.getCell(j).getCellTypeEnum()==CellType.FORMULA){row.getCell(j).setCellType(CellType.STRING);rowList.add(row.getCell(j).getStringCellValue());}else{rowList.add(getCellValueToString(row.getCell(j)));}}catch(Exceptione){rowList.add(getCellValueToString(row.getCell(j)));}}list.add(rowList);}returnlist;}/***获取某sheet某行某列的数据**@paramsheetIx*@paramrowNum*@paramcolNum*@return*@throwsException*/@SuppressWarnings("deprecation")publicStringreadCell(intsheetIx,introwNum,intcolNum)throwsException{Sheetsheet=workbook.getSheetAt(sheetIx);Rowrow=sheet.getRow(rowNum);if(row==null){returnnull;}row.getCell(colNum).setCellType(Cell.CELL_TYPE_STRING);Cellcell=row.getCell(colNum);if(cell==null){returnnull;}returncell.getStringCellValue();}/****将数据写入到Excel默认第一页中,从第1行开始写入**@paramrowData数据*@return*@throwsIOException**/publicbooleanwrite(List<List<String>>rowData)throwsIOException{returnwrite(0,rowData,0);}/****将数据写入到Excel新创建的Sheet页**@paramrowData数据*@paramsheetName长度为1-31,不能包含后面任一字符::\/?*[]*@return*@throwsIOException*/publicbooleanwrite(List<List<String>>rowData,StringsheetName,booleanisNewSheet)throwsIOException{Sheetsheet=null;if(isNewSheet){sheet=workbook.createSheet(sheetName);}else{sheet=workbook.createSheet();}intsheetIx=workbook.getSheetIndex(sheet);returnwrite(sheetIx,rowData,0);}/****将数据追加到sheet页最后**@paramrowData数据*@paramsheetIx指定Sheet页,从0开始*@paramisAppend是否追加,true追加,false重置sheet再添加*@return*@throwsIOException*/publicbooleanwrite(intsheetIx,List<List<String>>rowData,booleanisAppend)throwsIOException{if(isAppend){returnwrite(sheetIx,rowData,getRowCount(sheetIx));}else{//清空再添加clearSheet(sheetIx);returnwrite(sheetIx,rowData,0);}}/****将数据写入到Excel指定Sheet页指定开始行中,指定行后面数据向后移动**@paramrowData数据*@paramsheetIx指定Sheet页,从0开始*@paramstartRow指定开始行,从0开始*@return*@throwsIOException*/publicbooleanwrite(intsheetIx,List<List<String>>rowData,intstartRow)throwsIOException{Sheetsheet=workbook.getSheetAt(sheetIx);intdataSize=rowData.size();if(getRowCount(sheetIx)>0){//如果小于等于0,则一行都不存在sheet.shiftRows(startRow,getRowCount(sheetIx),dataSize);}for(inti=0;i<dataSize;i++){Rowrow=sheet.createRow(i+startRow);for(intj=0;j<rowData.get(i).size();j++){Cellcell=row.createCell(j);cell.setCellValue(rowData.get(i).get(j)+"");}}returntrue;}/****设置cell样式**@paramsheetIx指定Sheet页,从0开始*@paramcolIndex指定列,从0开始*@return*@throwsIOException*/publicbooleansetStyle(intsheetIx,introwIndex,intcolIndex,CellStylestyle)throwsIOException{Sheetsheet=workbook.getSheetAt(sheetIx);//sheet.autoSizeColumn(colIndex,true);//设置列宽度自适应sheet.setColumnWidth(colIndex,4000);Cellcell=sheet.getRow(rowIndex).getCell(colIndex);cell.setCellStyle(style);returntrue;}/****设置样式**@paramtype1:标题2:第一行*@return*/publicCellStylemakeStyle(inttype){CellStylestyle=workbook.createCellStyle();DataFormatformat=workbook.createDataFormat();style.setDataFormat(format.getFormat("@"));////内容样式设置单元格内容格式是文本style.setAlignment(HorizontalAlignment.CENTER);//内容居中//style.setBorderTop(CellStyle.BORDER_THIN);//边框样式//style.setBorderRight(CellStyle.BORDER_THIN);//style.setBorderBottom(CellStyle.BORDER_THIN);//style.setBorderLeft(CellStyle.BORDER_THIN);Fontfont=workbook.createFont();//文字样式if(type==1){//style.setFillForegroundColor(HSSFColor.LIGHT_BLUE.index);//颜色样式//前景颜色//style.setFillBackgroundColor(HSSFColor.LIGHT_BLUE.index);//背景色//style.setFillPattern(CellStyle.ALIGN_FILL);//填充方式font.setBold(true);font.setFontHeight((short)500);}if(type==2){font.setBold(true);font.setFontHeight((short)300);}style.setFont(font);returnstyle;}/****合并单元格**@paramsheetIx指定Sheet页,从0开始*@paramfirstRow开始行*@paramlastRow结束行*@paramfirstCol开始列*@paramlastCol结束列*/publicvoidregion(intsheetIx,intfirstRow,intlastRow,intfirstCol,intlastCol){Sheetsheet=workbook.getSheetAt(sheetIx);sheet.addMergedRegion(newCellRangeAddress(firstRow,lastRow,firstCol,lastCol));}/****指定行是否为空**@paramsheetIx指定Sheet页,从0开始*@paramrowIndex指定开始行,从0开始*@returntrue不为空,false不行为空*@throwsIOException*/publicbooleanisRowNull(intsheetIx,introwIndex)throwsIOException{Sheetsheet=workbook.getSheetAt(sheetIx);returnsheet.getRow(rowIndex)==null;}/***判断行的内容是否为空**@return*/publicbooleanisRowEmpty(intsheetIx,introwIndex){Rowrow=this.workbook.getSheetAt(sheetIx).getRow(rowIndex);if(row!=null){for(intc=row.getFirstCellNum();c<row.getLastCellNum();c++){Cellcell=row.getCell(c);if(cell!=null&&cell.getStringCellValue()!=""&&cell.getCellTypeEnum()!=CellType.BLANK)returnfalse;}}returntrue;}/****创建行,若行存在,则清空**@paramsheetIx指定sheet页,从0开始指定创建行,从0开始*@return*@throwsIOException*/publicbooleancreateRow(intsheetIx,introwIndex)throwsIOException{Sheetsheet=workbook.getSheetAt(sheetIx);sheet.createRow(rowIndex);returntrue;}/****指定单元格是否为空**@paramsheetIx指定Sheet页,从0开始*@paramrowIndex指定开始行,从0开始*@paramcolIndex指定开始列,从0开始*@returntrue行不为空,false行为空*@throwsIOException*/publicbooleanisCellNull(intsheetIx,introwIndex,intcolIndex)throwsIOException{Sheetsheet=workbook.getSheetAt(sheetIx);if(!isRowNull(sheetIx,rowIndex)){returnfalse;}Rowrow=sheet.getRow(rowIndex);returnrow.getCell(colIndex)==null;}/****创建单元格**@paramsheetIx指定sheet页,从0开始*@paramrowIndex指定行,从0开始*@paramcolIndex指定创建列,从0开始*@returntrue列为空,false行不为空*@throwsIOException*/publicbooleancreateCell(intsheetIx,introwIndex,intcolIndex)throwsIOException{Sheetsheet=workbook.getSheetAt(sheetIx);Rowrow=sheet.getRow(rowIndex);row.createCell(colIndex);returntrue;}/***返回sheet中的行数***@paramsheetIx指定Sheet页,从0开始*@return*/publicintgetRowCount(intsheetIx){Sheetsheet=workbook.getSheetAt(sheetIx);if(sheet.getPhysicalNumberOfRows()==0){return0;}returnsheet.getLastRowNum()+1;}/***获取有数据的行数**@paramsheetIx*@return*/publicintgetRealRowCount(intsheetIx){introwCount=getRowCount(sheetIx);intn=0;for(inti=0;i<rowCount;i++){if(!isRowEmpty(sheetIx,i)){n++;}}returnn;}/****返回所在行的列数**@paramsheetIx指定Sheet页,从0开始*@paramrowIndex指定行,从0开始*@return返回-1表示所在行为空*/publicintgetColumnCount(intsheetIx,introwIndex){Sheetsheet=workbook.getSheetAt(sheetIx);Rowrow=sheet.getRow(rowIndex);returnrow==null?-1:row.getLastCellNum();}/****设置row和column位置的单元格值**@paramsheetIx指定Sheet页,从0开始*@paramrowIndex指定行,从0开始*@paramcolIndex指定列,从0开始*@paramvalue值*@return*@throwsIOException*/publicbooleansetValueAt(intsheetIx,introwIndex,intcolIndex,Stringvalue)throwsIOException{Sheetsheet=workbook.getSheetAt(sheetIx);sheet.getRow(rowIndex).getCell(colIndex).setCellValue(value);returntrue;}/****返回row和column位置的单元格值**@paramsheetIx指定Sheet页,从0开始*@paramrowIndex指定行,从0开始*@paramcolIndex指定列,从0开始*@return**/publicStringgetValueAt(intsheetIx,introwIndex,intcolIndex){Sheetsheet=workbook.getSheetAt(sheetIx);returngetCellValueToString(sheet.getRow(rowIndex).getCell(colIndex));}publicStringgetCellValue(Cellcell){intcellType=cell.getCellType();StringcellValue="";switch(cellType){caseHSSFCell.CELL_TYPE_NUMERIC:cellValue=String.valueOf(cell.getNumericCellValue());break;caseHSSFCell.CELL_TYPE_FORMULA:try{cellValue=cell.getStringCellValue();}catch(IllegalStateExceptione){cellValue=String.valueOf(cell.getNumericCellValue());}break;default:cellValue=cell.getStringCellValue();}returncellValue.trim();}/****重置指定行的值**@paramrowData数据*@paramsheetIx指定Sheet页,从0开始*@paramrowIndex指定行,从0开始*@return*@throwsIOException*/publicbooleansetRowValue(intsheetIx,List<String>rowData,introwIndex)throwsIOException{Sheetsheet=workbook.getSheetAt(sheetIx);Rowrow=sheet.getRow(rowIndex);for(inti=0;i<rowData.size();i++){row.getCell(i).setCellValue(rowData.get(i));}returntrue;}/****返回指定行的值的集合**@paramsheetIx指定Sheet页,从0开始*@paramrowIndex指定行,从0开始*@return*/publicList<String>getRowValue(intsheetIx,introwIndex){Sheetsheet=workbook.getSheetAt(sheetIx);Rowrow=sheet.getRow(rowIndex);List<String>list=newArrayList<String>();if(row==null){list.add(null);}else{for(inti=0;i<row.getLastCellNum();i++){list.add(getCellValueToString(row.getCell(i)));}}returnlist;}/****返回列的值的集合**@paramsheetIx指定Sheet页,从0开始*@paramrowFrom从指定行数开始*@paramcolIndex指定列,从0开始*@return*/publicList<String>getColumnValue(intsheetIx,introwFrom,intcolIndex){Sheetsheet=workbook.getSheetAt(sheetIx);List<String>list=newArrayList<String>();for(inti=rowFrom;i<getRowCount(sheetIx);i++){Rowrow=sheet.getRow(i);if(row==null){list.add(null);continue;}list.add(getCellValueToString(sheet.getRow(i).getCell(colIndex)));}returnlist;}/****获取excel中sheet总页数**@return*/publicintgetSheetCount(){returnworkbook.getNumberOfSheets();}publicvoidcreateSheet(){workbook.createSheet();}/****设置sheet名称,长度为1-31,不能包含后面任一字符::\/?*[]**@paramsheetIx指定Sheet页,从0开始,//*@paramname*@return*@throwsIOException*/publicbooleansetSheetName(intsheetIx,Stringname)throwsIOException{workbook.setSheetName(sheetIx,name);returntrue;}/****获取sheet名称**@paramsheetIx指定Sheet页,从0开始*@return*@throwsIOException*/publicStringgetSheetName(intsheetIx)throwsIOException{Sheetsheet=workbook.getSheetAt(sheetIx);returnsheet.getSheetName();}/***获取sheet的索引,从0开始**@paramnamesheet名称*@return-1表示该未找到名称对应的sheet*/publicintgetSheetIndex(Stringname){returnworkbook.getSheetIndex(name);}/****删除指定sheet**@paramsheetIx指定Sheet页,从0开始*@return*@throwsIOException*/publicbooleanremoveSheetAt(intsheetIx)throwsIOException{workbook.removeSheetAt(sheetIx);returntrue;}/****删除指定sheet中行,改变该行之后行的索引**@paramsheetIx指定Sheet页,从0开始*@paramrowIndex指定行,从0开始*@return*@throwsIOException*/publicbooleanremoveRow(intsheetIx,introwIndex)throwsIOException{Sheetsheet=workbook.getSheetAt(sheetIx);sheet.shiftRows(rowIndex+1,getRowCount(sheetIx),-1);Rowrow=sheet.getRow(getRowCount(sheetIx)-1);sheet.removeRow(row);returntrue;}/****设置sheet页的索引**@paramsheetnameSheet名称Sheet索引,从0开始*/publicvoidsetSheetOrder(Stringsheetname,intsheetIx){workbook.setSheetOrder(sheetname,sheetIx);}/****清空指定sheet页(先删除后添加并指定sheetIx)**@paramsheetIx指定Sheet页,从0开始*@return*@throwsIOException*/publicbooleanclearSheet(intsheetIx)throwsIOException{Stringsheetname=getSheetName(sheetIx);removeSheetAt(sheetIx);workbook.createSheet(sheetname);setSheetOrder(sheetname,sheetIx);returntrue;}publicWorkbookgetWorkbook(){returnworkbook;}/****关闭流**@throwsIOException*/publicvoidclose()throwsIOException{if(os!=null){os.close();}workbook.close();}/****转换单元格的类型为String默认的<br>*默认的数据类型:CELL_TYPE_BLANK(3),CELL_TYPE_BOOLEAN(4),*CELL_TYPE_ERROR(5),CELL_TYPE_FORMULA(2),CELL_TYPE_NUMERIC(0),*CELL_TYPE_STRING(1)**@paramcell*@return**/@SuppressWarnings("deprecation")privateStringgetCellValueToString(Cellcell){StringstrCell="";if(cell==null){returnnull;}switch(cell.getCellType()){caseCell.CELL_TYPE_BOOLEAN:strCell=String.valueOf(cell.getBooleanCellValue());break;caseCell.CELL_TYPE_NUMERIC:if(HSSFDateUtil.isCellDateFormatted(cell)){Datedate=cell.getDateCellValue();if(pattern!=null){SimpleDateFormatsdf=newSimpleDateFormat(pattern);strCell=sdf.format(date);}else{strCell=date.toString();}break;}//不是日期格式,则防止当数字过长时以科学计数法显示cell.setCellType(HSSFCell.CELL_TYPE_STRING);strCell=cell.toString();break;caseCell.CELL_TYPE_STRING:strCell=cell.getStringCellValue();break;default:break;}returnstrCell;}/***获取cell**@paramsheetId*@paramrowId*@paramcolId*@return*@authorzgd*@time2018年6月27日14:54:53*/publicCellgetCell(intsheetId,introwId,intcolId){Sheetsheet=workbook.getSheetAt(sheetId);Rowrow=sheet.getRow(rowId);if(row==null){returnnull;}returnrow.getCell(colId);}/***前景色是否为空,是否没有填充任何颜色**@return*@authorzgd*@time2018年6月27日14:54:53*/publicbooleanisForeColorEmpty(intsheetId,introwId,intcolId){if(this.workbookinstanceofHSSFWorkbook){HSSFCellcell=(HSSFCell)getCell(sheetId,rowId,colId);HSSFColorcolor=cell.getCellStyle().getFillForegroundColorColor();return"0:0:0".equals(color.getHexString());}if(this.workbookinstanceofXSSFWorkbook){XSSFCellcell=(XSSFCell)getCell(sheetId,rowId,colId);if(cell!=null){XSSFColorcolor=cell.getCellStyle().getFillForegroundColorColor();returncolor==null;}}returntrue;}/***设置列宽**@paramsheetIdsheet的索引*@parammxiWidthRow确保最小值列宽的行*@paramcolb从哪一列开始设置*@paramcole到哪一行结束*@authorzgd*@time2018年6月27日14:54:53*/publicvoidsetColumnWidth(Sheetsheet,RowmxiWidthRow,intsheetId,intcolb,intcole){//设置列宽for(inti=colb;i<=cole;i++){intlength=0;if(mxiWidthRow.getCell(i)!=null&&!StringUtils.isEmpty(mxiWidthRow.getCell(i).getStringCellValue())){length=mxiWidthRow.getCell(i).getStringCellValue().trim().getBytes().length*256+200;}List<String>columnValue=this.getColumnValue(sheetId,0,i);for(Strings:columnValue){if(s!=null){intl=s.trim().getBytes().length*256+200;length=Math.max(l,length);}}if(length>15000){length=15000;}sheet.setColumnWidth(i,length);}}}

导入数据库表格数据如下:

IdxTunnel_left_ZDKTunnel_right_ZDKis_tunnel
1DK2291.416DK0是2DK7389.65DK2291.416否3ZK2277ZK0是4ZK5235.68ZK2277否

以上就是利用java的反射机制读取excel表格数据的方法,看完之后是否有所收获呢?如果想了解更多相关内容,欢迎关注亿速云行业资讯!