`

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

    博客分类:
  • Java
阅读更多

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

  • 大小: 12.7 KB
分享到:
评论

相关推荐

    Java poi复制execl的sheet页,跨文件操作,数据和样式全部复制,工具类

    在Java开发中,Apache POI库是一个非常实用的工具,用于读取、写入和修改Microsoft Office格式的文件,特别是Excel文件(.xlsx和.xls)。本篇将详细讲解如何使用POI库进行Excel的Sheet页复制,包括数据和样式的跨...

    poi实现sheet页复制和根据空行拆分

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。在Excel处理方面,POI提供了一套API,允许程序员在Java环境中创建、修改和读取Excel文件。本篇文章将详细介绍如何...

    poi复制指定行数的Excel表格内容

    Apache POI 是一个流行的开源库,它允许开发者使用Java语言来读取、写入和修改Microsoft Office格式的文件,包括Excel(.xlsx 和 .xls)。本教程将深入探讨如何使用Apache POI库来复制Excel表格的指定行数及其样式。...

    poi、easyexcel分别完美复制excel的Sheet

    不要再使用从copysheet、copyrow、copyStyle的方式复制sheet页了。明明可以几行代码搞定的事情。。在easyexcel-test模块下WriteTest类中。1、readAndWriteSheetPOI。2、readAndWriteSheet 这两个方法中。

    java的POI操作Excel文件.pdf

    Java的Apache POI库是一个强大的工具,用于读取、创建和修改Microsoft Office格式的文件,尤其是Excel文件。本文将深入探讨使用POI进行Excel操作时的一些关键知识点,以及如何解决遇到的问题。 首先,我们来看一个...

    java利用替换Excel2007中sheet方式导出excel,支持大数据量

    例如,`Excel2007WriterImpl.java`可能会使用迭代器或集合的分页功能,每次只处理一部分数据,写入一个Sheet后清空内存,再处理下一批数据,从而降低内存压力。 `XMLEncoder.java`可能涉及到的是XML序列化的过程。...

    JAVA对Excel的基本操作(包括创建,更新,读取,拷贝等相关操作)

    拷贝Excel文件可以分为两个步骤:读取原始文件并创建新的工作簿,然后将内容复制到新工作簿。以下是一个简化的例子: ```java Workbook originalWorkbook = WorkbookFactory.create(new File("input.xls")); ...

    java的POI操作Excel文件2.pdf

    Java的Apache POI库是一个强大的工具,用于读取、创建和修改Microsoft Office格式的文件,尤其是Excel工作簿。本文将深入探讨在使用POI进行Excel操作时遇到的一些常见问题及解决方案,特别是关于设置分页符的bug和...

    JAVA-write-EXCEL.rar_copy excel java_java write_java读取_java读取Exc

    - 如果要复制整个工作簿,可以创建一个新的`Workbook`,然后遍历源工作簿的所有工作表,使用`Sheet.cloneSheet()`方法复制,并添加到新工作簿中。 - 复制单元格数据时,需注意样式和公式也需要一并复制。 4. **...

    JAVA 无需JXL和POI用PageOffice自动生成Excel表格.pdf

    以下是一段简单的示例代码,演示如何在空白Excel文件中创建一个表格: ```java import com.zhuozhengsoft.pageoffice.FileControl; import com.zhuozhengsoft.pageoffice.PageOfficeCtrl; import ...

    poi导出下拉列表,数据有效性

    Apache POI 是一个流行的Java库,用于处理Microsoft Office格式的文件,如Excel。在这个场景中,我们关注的是如何使用POI来创建具有下拉列表功能的Excel文件,并设置数据有效性规则。这通常在数据录入或者表格模板...

    poi excel的解析和导出工具

    Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。在Excel处理方面,POI提供了一种高效且灵活的方式,使得开发者能够在Java环境中读取、创建、修改和导出Excel...

    excel导入导出,java

    在Java中处理这些文件,我们通常会用到Apache POI库,这是一个用于读写Microsoft Office格式档案的开放源码Java API。Apache POI提供了HSSF(用于.xls)和XSSF(用于.xlsx)组件来操作Excel。 **导入Excel数据** 1...

    jxl操作excel表格

    本文将深入探讨如何利用`jxl`库进行Excel表格的操作,包括读取表格、拷贝工作簿、更新工作簿以及将多个Sheet合并到一个Excel文件中。 首先,让我们了解`jxl`库的基本概念。`jxl`库提供了一系列的类和接口,如`...

    ExcelHelper(Excel导入导出)实例源码.zip

    3. **工作簿和工作表操作**:在POI中,一个工作簿(Workbook)代表整个Excel文件,而工作表(Sheet)则是工作簿中的一页。通过`createSheet()`方法可以创建新的工作表,`getSheetAt()`或`getSheet()`用于访问已有的...

    导出Excle表格

    本文将深入探讨如何实现“导出Excel表格”这一功能,并结合描述中的“只需要把代码拷贝到项目里面,在把数据源绑定就可以”的提示,为你提供一个简单而实用的方法。 首先,我们要理解数据导出的基本流程。这个过程...

    Execlutil.rar_文件操作_Java_

    4. **拷贝Sheet**:如果"ExcelUtil.java"包含此功能,可能提供了一个方法,如`copySheet()`,它会创建一个现有工作表的副本,并将其添加到同一个或新的工作簿中。 接下来是"CopyFileUtil.java",这个类专注于文件...

Global site tag (gtag.js) - Google Analytics