• java 实现 excel sheet 拷贝到另一个Excel文件中 poi


    public class CopyExcelSheetToAnotherExcelSheet {

      public static void main(String[] args) throws FileNotFoundException, IOException {
        String fromPath = "D:\share\jiemu_new\";// excel存放路径
        String toPath = "c:\ok\";// 保存新EXCEL路径
        // 新的excel 文件名
        String excelName = "节目访问量";
        // 创建新的excel
        HSSFWorkbook wbCreat = new HSSFWorkbook();
        File file = new File(fromPath);
        for (File excel : file.listFiles()) {
          // 打开已有的excel
          String strExcelPath = fromPath + "\" + excel.getName();
          InputStream in = new FileInputStream(strExcelPath);
          HSSFWorkbook wb = new HSSFWorkbook(in);
          for (int ii = 0; ii < wb.getNumberOfSheets(); ii++) {
            HSSFSheet sheet = wb.getSheetAt(ii);
            HSSFSheet sheetCreat = wbCreat.createSheet(sheet.getSheetName());
            // 复制源表中的合并单元格
            MergerRegion(sheetCreat, sheet);
            int firstRow = sheet.getFirstRowNum();
            int lastRow = sheet.getLastRowNum();
            for (int i = firstRow; i <= lastRow; i++) {
              // 创建新建excel Sheet的行
              HSSFRow rowCreat = sheetCreat.createRow(i);
              // 取得源有excel Sheet的行
              HSSFRow row = sheet.getRow(i);
              // 单元格式样
              int firstCell = row.getFirstCellNum();
              int lastCell = row.getLastCellNum();
              for (int j = firstCell; j < lastCell; j++) {
                // 自动适应列宽 貌似不起作用
                //sheetCreat.autoSizeColumn(j);
                System.out.println(row.getCell(j));
                rowCreat.createCell(j);
                String strVal ="";
                if (row.getCell(j)==null) {
                 
                }else{
                  strVal = removeInternalBlank(row.getCell(j).getStringCellValue());
                }
                rowCreat.getCell(j).setCellValue(strVal);
              }
            }
          }
        }
        FileOutputStream fileOut = new FileOutputStream(toPath + excelName + ".xls");
        wbCreat.write(fileOut);
        fileOut.close();
      }

      /**
      * 复制原有sheet的合并单元格到新创建的sheet
      *
      * @param sheetCreat
      *      新创建sheet
      * @param sheet
      *      原有的sheet
      */
      private static void MergerRegion(HSSFSheet sheetCreat, HSSFSheet sheet) {
        int sheetMergerCount = sheet.getNumMergedRegions();
        for (int i = 0; i < sheetMergerCount; i++) {
          Region mergedRegionAt = sheet.getMergedRegionAt(i);
          sheetCreat.addMergedRegion(mergedRegionAt);
        }

      }

      /**
      * 去除字符串内部空格
      */
      public static String removeInternalBlank(String s) {
        // System.out.println("bb:" + s);
        Pattern p = Pattern.compile("\s*| | | ");
        Matcher m = p.matcher(s);
        char str[] = s.toCharArray();
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < str.length; i++) {
          if (str[i] == ' ') {
            sb.append(' ');
          } else {
            break;
          }
        }
        String after = m.replaceAll("");
        return sb.toString() + after;
      }
    }

  • 相关阅读:
    iptables详解
    Linux文件结构及基本文件夹
    linux的一些常用命令
    Sql Server REPLACE函数的使用
    MSSQL复制表操作
    MSSQL2005数据库显示单一用户模式,无法进行任何操作
    linux下查看所有用户及所有用户组
    SpringMVC基础-10-拦截器
    SpringMVC基础-09-文件上传(单文件、多文件上传)
    SpringMVC基础-08-数据转换 & 数据格式化 & 数据校验
  • 原文地址:https://www.cnblogs.com/zhang-boke/p/7243605.html
Copyright © 2020-2023  润新知