• 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;
      }
    }

  • 相关阅读:
    ubuntu 下常用的命令(仅做记录)
    mysql5.7二进制包安装方法
    mysql5.6编译安装方法
    将yum下载的安装包保存到本地
    bash-completion--好用又强力的bash补全工具
    shell--破解RANDOM随机数
    shell--使用for循环统计一个网段内的在线主机
    shell--写一个脚本,批量创建10个用户用户名为userAdd1-10,并给他们随机密码
    shell--使用for循环批量创建10个随机小写字字母加固定字符的.txt文件,并写另一个脚本批量修改为.html文件
    如何选择开源许可证
  • 原文地址:https://www.cnblogs.com/zhang-boke/p/7243605.html
Copyright © 2020-2023  润新知