文件读取方法(txt.excel)

txt:

URL url = PriceConfigReader.class.getResource("/city-config.txt");
   BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(url.getPath()), "UTF-8"));
   String lineTxt = null;
   // load城市级别
   for(int level=0; (lineTxt = br.readLine()) != null; level++){
    Set cities = new HashSet();
    String[] names = lineTxt.split(",");
                for (String name : names) {
                 String b=name.trim().replace("市","");
                 cities.add(b);
                }
                if(cities.size() > 0) {
                 cityMap.put(level, cities);
                }
   }
   br.close();


excel:

URL url = PriceConfigReader.class.getResource("/price-config.xlsx");
   InputStream fis = new FileInputStream(url.getPath());
   XSSFWorkbook wb = new XSSFWorkbook(fis);
   // load工艺项目价格
   for(int sht=0; sht<8; sht++) {
    XSSFSheet sheet = wb.getSheetAt(sht); 
    int maxRow = sheet.getLastRowNum(); // 下标从0开始
    int cityLevelCount = 6; // 不同城市级别有不同价格
    if(sht == 7) // 主材料
     cityLevelCount = 1;
    for(int level = 1; level<=3; level++) {
     for(int cityLevel=0; cityLevel < cityLevelCount; cityLevel++) {
      List> result = new ArrayList>(32);
      for(int r=2; r <= maxRow; r++) {
       Row row = sheet.getRow(r);
       if(row == null) break;
       Cell name = row.getCell(1);
       int priceCol = (level-1)*6 + cityLevel + 2;
       if(sht == 7) priceCol = level + 1;
       Cell price = row.getCell(priceCol);
       if(name == null || price == null)
        continue;
       List item = new ArrayList(2);
       item.add(name.getStringCellValue());
       item.add(price.getNumericCellValue());
       result.add(item);
      }
      String key = String.format("sheet_%d_level_%d_city_%d", sht, level, cityLevel);
      data.put(key, result);
      System.out.println("add data " + key);
     }
    }
   }
   
   fis.close();
   wb.close();

你可能感兴趣的:(编程经验)