Java后端解析excel(url)网络资源

情景

excel存储在文件服务器上,只能拿到excel的url,切Excel可能为xls或xlsx格式。需要在后台使用java解析Excel的内容。

网上提供了方法大多都是先将Excel下载,然后读取本地文件解析,这样做比较麻烦,在存储文件上容易出现更多的问题,这里我直接使用流进行读取网络Excel文件。代码如下:

代码

maven依赖

        
            org.apache.poi
            poi
            3.15
        
        
            org.apache.poi
            poi-ooxml
            3.15
        

Java代码

 readFileJoinTender("http://39.100.92.205/oss/wsddw/test/201909/17/3eac6359870c40b481d080af64a62cf3.xlsx");

  private void readFileJoinTender(String path) {
    //excel文件路径
    try {
      Workbook wb =getWorkbook(path);

      //开始解析
      //读取sheet 0
      Sheet sheet = wb.getSheetAt(0);
      //第一行是列名,所以不读
      int firstRowIndex = sheet.getFirstRowNum() + 1;
      int lastRowIndex = sheet.getLastRowNum();

      //遍历行
      for (int rIndex = firstRowIndex; rIndex <= lastRowIndex; rIndex++) {
        Row row = sheet.getRow(rIndex);
        
        if (row != null) {
          int indexMin=row.getFirstCellNum();
          int indexMax=row.getLastCellNum();
          for (int i = indexMin; i < indexMax; i++) {
            Cell cell=row.getCell(i);
            if(cell!=null){
              System.out.println(cell.toString());
            }
          }
        }
      }

    } catch (Exception e) {
      e.printStackTrace();
    }
  
  }
 
  public static Workbook getWorkbook(String path) throws Exception{
    String type = path.substring(path.lastIndexOf(".") + 1);
    Workbook wb;
    //根据文件后缀(xls/xlsx)进行判断
    InputStream input = new URL(path).openStream();
    if ("xls".equals(type)) {

      //文件流对象
      wb = new HSSFWorkbook(input);
    } else if ("xlsx".equals(type)) {
      wb = new XSSFWorkbook(input);
    } else {
      throw new Exception("文件 类型错误");
    }
    return wb;
  }

 

你可能感兴趣的:(后台,Spring,boot)