您的位置 首页 java

Java poi 读取excel文件

hello 大家好,已经有几天没发文了,因为这两天呢,要写一个demo,组长说可能以后项目中需要用到,所以呢,先写一个案列吧,下面就是我百度的文档,认为是比较好的,大家如果写这样的功能,可以参考一下:

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java. io .FileInputStream;
import java.io.InputStream;

public class PoiExcelTest {

 public static XSSFWorkbook workbook; // 工作簿
 public static XSSFSheet sheet; // 工作表
 public static XSSFRow row; // 行
 public static XSSFCell cell; // 列

 public static void main(String[] args) throws Exception{
 String fielName = "E:\\ExcelTest.xlsx";
 String sheetName = "AI研发中心";
 readExcelData(fielName,sheetName,2,1);
 readExcelData(fielName,sheetName,2,2);
 }

 public static void readExcelData(String fielName,String sheetName,int rownum,int cellnum) throws Exception{

 InputStream in = new FileInputStream(fielName);
 workbook = new XSSFWorkbook(in);
 sheet = workbook.getSheet(sheetName);
 row = sheet.getRow(rownum);
 cell = row.getCell(cellnum);
 switch (cell.getCellType()){
 case XSSFCell.CELL_TYPE_NUMERIC:
 System.out.println("第"+(rownum+1)+"行"+"第"+(cellnum+1)+"列的值: "+String.valueOf(cell.getNumericCellValue()));
  break ;
 case XSSFCell.CELL_TYPE_STRING:
 System.out.println("第"+(rownum+1)+"行"+"第"+(cellnum+1)+"列的值: "+cell.getStringCellValue());
 break;
 default:
 System.out.println("第"+(rownum+1)+"行"+"第"+(cellnum+1)+"列的值: "+cell.getStringCellValue());
 break;
 }
 }
} 

Excel数据:

读取的数据:

这个呢,可以供大家参考一下,

下面呢,是我写的代码,大家如果做过这种功能,可以给点意见,怎么用更少的代码,来实现这个功能

 /**
 * 方法名:importExcel
 * 功能:解析
 * 描述:
 * 创建人:typ
 * 创建时间:2018/10/19 11:45
 * 修改人:
 * 修改描述:
 * 修改时间:
 */
 public static void importExcel(String fileName) {
 checkFile(fileName);
 Person person = null;
 logger.info("导入解析开始,fileName:{}", fileName);
 try {
 List<Person> list = new ArrayList<Person>();
 InputStream inputStream = new FileInputStream(fileName);
 Workbook workbook = WorkbookFactory.create(inputStream);
 Sheet sheet = workbook.getSheetAt(0);
 //获取sheet的行数
 int rows = sheet.getPhysicalNumberOfRows();
 logger.info("----------------------->" + rows);
 int rowcount = sheet.getLastRowNum(); //取得有效的行数
 logger.info("----------------------->" + rowcount);
 for (int i = 0; i < rows; i++) {
 //过滤表头行
 if (i == 0) {
 continue;
 }
 //获取当前行的数据
 Row row = sheet.getRow(i);
// Cell cell1=row.getCell(2);
// String s= cell1.getStringCellValue();
 Object[] objects = new Object[row.getPhysicalNumberOfCells()];
 int index = 0;
 person = new Person();
 for (Cell cell : row) {
// int ksd=cell.getColumnIndex();tao
 if (cell.getCellTypeEnum().equals(CellType.STRING)) {
// objects[index] = cell.getStringCellValue();
 switch (cell.getColumnIndex()) {
 case 1:
// row = sheet.getRow(index);
// logger.info("--------------------Row"+row);
// person.setName(null != objects[index]. toString () ? objects[index].toString() : null);
 person.setName(""!=row.getCell(1).getStringCellValue()?row.getCell(1).getStringCellValue():"");
 break;
 case 2:
// person.setDept(null != objects[index].toString() ? objects[index].toString() : null);
 person.setDept(""!=row.getCell(2).getStringCellValue()?row.getCell(2).getStringCellValue():"");
 break;
 case 3:
// person.setEpoly(null != objects[index].toString() ? objects[index].toString() : null);
 person.setEpoly(""!=row.getCell(3).getStringCellValue()?row.getCell(3).getStringCellValue():"");
 break;
 case 4:
// person.setSex(null != objects[index].toString() ? objects[index].toString() : null);
 person.setSex(""!=row.getCell(4).getStringCellValue()?row.getCell(4).getStringCellValue():"");
 break;
 case 5:
// person.setFree(null != objects[index].toString() ? objects[index].toString() : null);
 person.setFree(""!=row.getCell(5).getStringCellValue()?row.getCell(5).getStringCellValue():"");
 break;
 }
 }
 index++;
// if (cell.getCellTypeEnum().equals(CellType.NUMERIC)) {
//// objects[index] = (int) cell.getNumericCellValue();
//// }
// if(cell.getCellTypeEnum().equals(CellType.BOOLEAN)){
// objects[index] = cell.getBooleanCellValue();
// }
// if(cell.getCellTypeEnum().equals(CellType.ERROR)){
// objects[index] = cell.getErrorCellValue();
// }
 }
 person.setId(row.getRowNum());
 list.add(person);
 System.gc();
 }
 logger.info("最终读出的来的结果是----------------------------->" + list.toString());
 logger.info("导入文件解析成功!");
 } catch (Exception e) {
 logger.info("导入文件解析失败!");
 e.printStackTrace();
 }
 }

 

文章来源:智云一二三科技

文章标题:Java poi 读取excel文件

文章地址:https://www.zhihuclub.com/184528.shtml

关于作者: 智云科技

热门文章

网站地图