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

package com.liujicheng; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.Region; 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*|\t|\r|\n");         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;     } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值