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;
}
ListrowLst=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(Listheader,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;icellList: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(Listheader,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;iobjClass=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;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。