zoukankan      html  css  js  c++  java
  • 每日总结1213

    记录以下去读csv和xlsx的操作:

    读取xlsx:

    public  List<List<Object>> ExcelToRowList(String fileP){
    Workbook wb = null;
    Sheet sheet = null;
    Row row = null;
    List<List<Object>> sheetList = new ArrayList<>();
    String filePath = fileP;
    wb = readExcel(filePath);
    if (wb != null) {
    try {
    List<List<List<Object>>> list = new ArrayList<>();

    // 循环页签
    for (int sheetNum = 0; sheetNum < wb.getNumberOfSheets(); sheetNum++) {
    // 指定页签的值
    sheet = wb.getSheetAt(sheetNum);
    // 定义存放一个页签中所有数据的List


    // 循环行
    for (int rowNum = 0; rowNum <= sheet.getLastRowNum(); rowNum++) {
    // 指定行的值
    row = sheet.getRow(rowNum);
    // 定义存放一行数据的List
    List<Object> rowList = new ArrayList<>();
    // 循环列
    for (int cellNum = 0; cellNum < row.getLastCellNum(); cellNum++) {
    Cell cell = sheet.getRow(rowNum).getCell(cellNum);
    rowList.add(getStringCellValue(cell));
    }
    //System.out.println(rowList.get(1));
    sheetList.add(rowList);
    }
    list.add(sheetList);
    //System.out.println(sheetList.get(2));
    }
    // System.err.println(list.toString());
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    return sheetList;
    }
    private static Workbook readExcel(String filePath){
    if(filePath==null){
    return null;
    }
    String extString = filePath.substring(filePath.lastIndexOf("."));

    try {
    @SuppressWarnings("resource")
    InputStream is = new FileInputStream(filePath);
    if(".xls".equals(extString)){
    return new HSSFWorkbook(is);
    }else if(".xlsx".equals(extString)){
    return new XSSFWorkbook(is);
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    return null;
    }



    @SuppressWarnings("deprecation")
    public static String getStringCellValue(Cell cell) {
    String cellvalue = "";
    if (cell == null) {
    return "";
    }
    switch (cell.getCellType()) {
    case Cell.CELL_TYPE_STRING:
    cellvalue = cell.getStringCellValue();
    break;
    case Cell.CELL_TYPE_NUMERIC:
    if (DateUtil.isCellDateFormatted(cell)) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = cell.getDateCellValue();
    cellvalue = sdf.format(date);
    } else {
    cellvalue = String.valueOf(cell.getNumericCellValue());
    }
    break;
    case Cell.CELL_TYPE_BOOLEAN:
    cellvalue = String.valueOf(cell.getBooleanCellValue());
    break;
    case Cell.CELL_TYPE_BLANK:
    cellvalue = "";
    break;
    default:
    cellvalue = "";
    break;
    }
    if (cellvalue == "") {
    return "";
    }
    return cellvalue;
    }
    读取CSV:
    public List<List<String>> CSVToExcel(String fileP){
    List<List<String>> bigList=new ArrayList<>();
    try (Reader reader = Files.newBufferedReader(Paths.get(fileP))) {
    Iterable<CSVRecord> records = CSVFormat.DEFAULT.parse(reader);
    for (CSVRecord record : records) {

    List<String> l=new ArrayList<>();
    for(int i=0;i<record.size();i++){
    String str=record.get(i).replaceAll("'","''");
    l.add(str);
    }
    bigList.add(l);
    }

    } catch (IOException ex) {
    ex.printStackTrace();
    }
    return bigList;

    }
    
    
  • 相关阅读:
    Spring事务内方法调用自身事务 增强的三种方式
    SpringBoot优化内嵌的Tomcat
    Tomcat 8.0的并发优化
    Swift搭建本地http服务器,实现外部视频即时播放
    更新ruby:Error running 'requirements_osx_brew_update_system ruby-2.4.1报错解决
    iOS关于沙盒文件拷贝manager.copyItem的一个坑
    Swift udp实现根据端口号监听广播数据(利用GCDAsyncUdpSocket实现)
    iOS刻度尺换算之1mm等于多少像素理解
    Swift下的基于UIView的位置属性扩展
    iOS Main Thread Checker: UI API called on a background thread的解释
  • 原文地址:https://www.cnblogs.com/ruangongwangxiansheng/p/15685831.html
Copyright © 2011-2022 走看看