Java POI 解析Excel(xls、xlsx格式同时支持)

逃离我推掉我的手 2022-04-18 03:02 722阅读 0赞

随手写个简单摘要:

POI大家都不陌生,经常拿来解析excel表格。

  1. 其中,xls格式的需要使用HSSFWorkbook类来解析,xlsx格式的需要使用XSSFWorkbook格式来解析。

那么如何整合二者呢。

代码目录:

1.传入文件名称,获取workbook对象;

2.使用workbook对象操作excel表格;

3.辅助代码;

一、获取workbook对象<重要代码>

  1. /**
  2. * xls/xlsx都使用的Workbook
  3. *
  4. * @param fileName
  5. * @return
  6. * @author 吕小布 2018年10月26日
  7. */
  8. public static Workbook readExcel(String fileName){
  9. Workbook wb = null;
  10. if(fileName==null){
  11. return null;
  12. }
  13. String extString = fileName.substring(fileName.lastIndexOf("."));
  14. InputStream is = null;
  15. try {
  16. is = new FileInputStream(fileName);
  17. if(".xls".equals(extString)){
  18. return wb = new HSSFWorkbook(is);
  19. }else if(".xlsx".equals(extString)){
  20. return wb = new XSSFWorkbook(is);
  21. }
  22. } catch (FileNotFoundException e) {
  23. e.printStackTrace();
  24. } catch (IOException e) {
  25. e.printStackTrace();
  26. }
  27. return wb;
  28. }

二、使用workbook对象操作excel表格

  1. /**
  2. * Description: 解析excel简单例子
  3. *
  4. * @param fileName
  5. * @author 吕小布 2018年11月7日
  6. */
  7. public void analyzeDemo(String fileName){
  8. try {
  9. Workbook wb = readExcel(fileName); // 获得excel文件对象workbook
  10. Sheet s = wb.getSheetAt(0); // 获取指定工作表<这里获取的是第一个>
  11. //循环行 sheet.getPhysicalNumberOfRows()是获取表格的总行数
  12. for (int i = 0; i < s.getPhysicalNumberOfRows(); i++) {
  13. System.out.println("第"+(i+1)+"行内容:");
  14. Row row = s.getRow(i); // 取出第i行 getRow(index) 获取第(index+1)行
  15. for (int j = 0;j < row.getPhysicalNumberOfCells(); j++) { // getPhysicalNumberOfCells() 获取当前行的总列数
  16. String value1 = getCellFormatValue(row.getCell(0)); //getCell 获取单元格中的内容
  17. System.out.print(value1+"");
  18. }
  19. System.out.println("");
  20. }
  21. } catch (IndexOutOfBoundsException e) {
  22. // TODO Auto-generated catch block
  23. e.printStackTrace();
  24. }
  25. }

三、辅助代码,对单元格的内容进行format<可有可无>

  1. /**
  2. * format表格内容
  3. *
  4. * @param cell
  5. * @return
  6. * @author 吕小布 2018年10月26日
  7. */
  8. public static String getCellFormatValue(Cell cell){
  9. String cellValue = "";
  10. if(cell!=null){
  11. //判断cell类型
  12. switch(cell.getCellType()){
  13. case Cell.CELL_TYPE_NUMERIC:{
  14. cellValue = String.valueOf(cell.getNumericCellValue());
  15. break;
  16. }
  17. case Cell.CELL_TYPE_STRING:{
  18. cellValue = cell.getRichStringCellValue().getString();
  19. break;
  20. }
  21. default:
  22. cellValue = "";
  23. }
  24. }
  25. return cellValue;
  26. }

就此,关键代码全部结束,其余的地方得靠自己啦。

  1. 如果有书写错误的地方,请各位客官及时指出,以免误人子弟,遗臭万年。
  2. 你好,我叫吕小布

发表评论

表情:
评论列表 (有 0 条评论,722人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JAVA中Printf支持格式

    ⑦f 格式:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法: %f:不指定宽度,整数部分全部输出并输出6位小数。 %m.nf:输出共占m列,其中有n位小

    相关 POI解析Excel

    原创作品,允许转载,转载时请务必以超链接形式标明文章  [原始出处][Link 1] 、作者信息和本声明。否则将追究法律责任。 [http://programmer.blog.