Java利用POI读写Excel文件工具类
本文实例为大家分享了Java读写Excel文件工具类的具体代码,供大家参考,具体内容如下
packagecom.test.app.utils; importjava.io.File; importjava.io.FileInputStream; importjava.io.IOException; importjava.io.InputStream; importjava.lang.reflect.Field; importjava.lang.reflect.Method; importjava.util.ArrayList; importjava.util.List; importorg.apache.poi.hssf.usermodel.HSSFDateUtil; 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; importorg.slf4j.Logger; importorg.slf4j.LoggerFactory; importorg.springframework.util.CollectionUtils; /** *@Description:Excel读写工具类 *@Author:hunger.zhu *@CreateDate:2019/4/1013:21 */ publicclassExcelUtils{ privatestaticfinalLoggerlogger=LoggerFactory.getLogger(ExcelUtils.class); /** *读取Excel内容 *@paramfile需要被读的文件对象 *@paramstartRow从哪一行开始读(rowIndex从0开始的) *@paramisExcel2003是否是excel2003还是更高的版本 *@paramsheetIndex读取哪一个sheet(sheetIndex也是从0开始) *@returnList> *@throwsException */ publicstaticList
>readExcel(Filefile,intstartRow,booleanisExcel2003,intsheetIndex)throwsException{ List
>dataLst; InputStreamis=null; try{ /**创建读取文件的输入流*/ is=newFileInputStream(file); /**根据版本选择创建Workbook的方式*/ Workbookwb; if(isExcel2003){ wb=newHSSFWorkbook(is); }else{ wb=newXSSFWorkbook(is); } /**调用本类的读取方法读取excel数据*/ dataLst=read(wb,startRow,sheetIndex); }catch(Exceptionex){ logger.error("读取excel文件异常!",ex); ex.printStackTrace(); throwex; }finally{ if(is!=null){ try{ is.close(); }catch(IOExceptione){ e.printStackTrace(); } } } /**返回最后读取的结果*/ returndataLst; } privatestaticList
>read(Workbookwb,intstartRow,intsheetIndex){ /**总列数*/ inttotalCells=0; /**创建集合存储读取的数据*/ List
>dataLst=newArrayList
>(); /**得到第一个shell*/ Sheetsheet=wb.getSheetAt(sheetIndex); /**得到Excel的行数*/ inttotalRows=sheet.getPhysicalNumberOfRows(); /**得到Excel的列数*/ if(totalRows>=1&&sheet.getRow(0)!=null){ totalCells=sheet.getRow(0).getPhysicalNumberOfCells(); } /**循环Excel的行*/ for(intr=startRow;;r++){ Rowrow=sheet.getRow(r); if(row==null){ break; } List
rowLst=newArrayList (); /**循环Excel的列*/ for(intc=0;c > *@throwsException */ publicstaticList >readExcel(StringfilePath,intstartRow,booleanisExcel2003,intsheetIndex)throwsException{ returnreadExcel(newFile(filePath),startRow,isExcel2003,sheetIndex); } /** *将数据写入Excel工作簿 *@paramheader表格的标题 *@paramdataList所需写入的数据List
> *@paramisExcel2003是否是excel2003还是更高的版本 *@paramsheetName生成的excel中sheet的名字 *@returnWorkbook之后直接写出即可,如workbook.write(newFileOutputStream("E://test/20190410_test.xlsx")); */ publicstaticWorkbookgetWorkbookFromList(List
header,List >dataList,booleanisExcel2003, StringsheetName){ Workbookwb; //创建Workbook对象(excel的文档对象) if(isExcel2003){ wb=newHSSFWorkbook(); }else{ wb=newXSSFWorkbook(); } //建立新的sheet对象(excel的表单) Sheetsheet=wb.createSheet(sheetName); //在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个 introwNum=0; Rowrow0=sheet.createRow(rowNum); if(!CollectionUtils.isEmpty(header)){ //设置表头 for(inti=0;i
cellList:dataList){ Rowrow=sheet.createRow(rowNum); for(inti=0;i *@paramisExcel2003是否是excel2003还是更高的版本 *@paramsheetName生成的excel中sheet的名字 *@returnWorkbook对象,之后直接写出即可,如workbook.write(newFileOutputStream("E://test/20190410_test.xlsx")); *@throwsException */ publicstaticWorkbookgetWorkbookFromObj(List header,List>dataList,booleanisExcel2003, StringsheetName)throwsException{ Workbookwb; //创建Workbook对象(excel的文档对象) if(isExcel2003){ wb=newHSSFWorkbook(); }else{ wb=newXSSFWorkbook(); } //建立新的sheet对象(excel的表单) Sheetsheet=wb.createSheet(sheetName); //在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个 introwNum=0; Rowrow0=sheet.createRow(rowNum); if(!CollectionUtils.isEmpty(header)){ //设置表头 for(inti=0;i objClass=dataList.get(0).getClass(); Field[]fields=objClass.getDeclaredFields(); for(inti=0;i 以下为POIUtils.java:
packagecom.test.app.utils; importorg.apache.poi.ss.usermodel.*; importorg.apache.poi.ss.usermodel.Font; importorg.apache.poi.xssf.usermodel.XSSFCellStyle; importorg.apache.poi.xssf.usermodel.XSSFColor; importorg.apache.poi.xssf.usermodel.XSSFFont; importorg.apache.poi.xssf.usermodel.XSSFWorkbook; importjava.awt.*; importjava.awt.Color; /** *@Description:Excel的单元格样式 *@Author:hunger.zhu *@CreateDate:2019/4/1013:05 */ publicclassPOIUtils{ /** *设置单元格的边框(细)且为黑色,字体水平垂直居中,自动换行 *@paramworkbook *@paramfontName *@paramfontSize *@return */ publicstaticCellStylegetCellStyle(Workbookworkbook,StringfontName,shortfontSize){ CellStylestyle=workbook.createCellStyle(); Fontfont=workbook.createFont(); //设置上下左右四个边框宽度 style.setBorderTop(BorderStyle.THIN); style.setBorderBottom(BorderStyle.THIN); style.setBorderLeft(BorderStyle.THIN); style.setBorderRight(BorderStyle.THIN); //设置上下左右四个边框颜色 style.setTopBorderColor(IndexedColors.BLACK.getIndex()); style.setBottomBorderColor(IndexedColors.BLACK.getIndex()); style.setLeftBorderColor(IndexedColors.BLACK.getIndex()); style.setRightBorderColor(IndexedColors.BLACK.getIndex()); //水平居中,垂直居中,自动换行 style.setAlignment(HorizontalAlignment.CENTER); style.setVerticalAlignment(VerticalAlignment.CENTER); style.setWrapText(false); //设置字体样式及大小 font.setFontName(fontName); font.setFontHeightInPoints(fontSize); style.setFont(font); returnstyle; } }以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。