专业的JAVA编程教程与资源

网站首页 > java教程 正文

Java 拆分Excel工作表(java excel分批读取)

temp10 2024-09-21 03:57:43 java教程 8 ℃ 0 评论

在前文中,我介绍过如何利用Java代码来合并Excel文档。今天这篇教程将讲解如何来拆分Excel工作表。拆分情况分为以下两种:

  • 将一个Excel文档拆分成多个文档(源文档中的一个工作表为一个新文档)
  • 将一个Excel工作表按照数据拆分为多个工作表。

测试环境

本教程用到了JDK, Intellij IDEA以及Free Spire.XLS for Java控件。在运行代码前,需将控件中的Jar包导入IDEA。可通过E-iceblue中文官网下载产品包,解压后将lib文件夹下的Spire.Xls.jar手动导入IDEA,或者是在Maven仓库下的pom.xml引用以下配置来导入产品。

Java 拆分Excel工作表(java excel分批读取)

<repositories>
        <repository>
            <id>com.e-iceblue</id>
            <url>http://repo.e-iceblue.cn/repository/maven-public/</url>
        </repository>
    </repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.xls.free</artifactId>
        <version>3.9.1</version>
    </dependency>
</dependencies>

代码示例

示例1 将一个Excel文档拆分为多个文档

以下是含有两个工作表的示例文档:

import com.spire.xls.FileFormat;
import com.spire.xls.Workbook;

public class SplitWorksheets {
    public static void main(String[] args) {

        //创建Workbook对象
        Workbook wb = new Workbook();

        //加载Excel文档
        wb.loadFromFile("C:\\Users\\Test1\\Desktop\\Sample.xlsx");

        //声明Workbook变量
        Workbook newWb;

        //声明String类型变量
        String sheetName;

        //指定拆分生成的文档的存放路径
        String folderPath = "output/";

        //遍历所有工作表
        for (int i = 0; i < wb.getWorksheets().getCount(); i++) {

            //初始化Workbook对象
            newWb = new Workbook();

            //删除默认工作表
            newWb.getWorksheets().clear();

            //将源文档中的指定工作表复制到新的Workbook
            newWb.getWorksheets().addCopy(wb.getWorksheets().get(i));

            //获取工作表表名
            sheetName = wb.getWorksheets().get(i).getName();

            //将新的Workbook保存为Excel文档
            newWb.saveToFile(folderPath + sheetName + ".xlsx", FileFormat.Version2013);
        }
    }
}

拆分效果:

示例2 将一个Excel工作表按照数据拆分为多个工作表

示例文档如下:

import com.spire.xls.CellRange;
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

public class SplitWorksheetIntoMultiSheets {
    public static void main(String[] args) {
        //创建Workbook对象,加载Excel文档
        Workbook bookOriginal = new Workbook();
        bookOriginal.loadFromFile("C:\\Users\\Test1\\Desktop\\Test.xlsx");

        //获取第一个工作表
        Worksheet sheet = bookOriginal.getWorksheets().get(0);

        //获取标题行
        CellRange headRow1 = sheet.getCellRange(1, 1, 1, 6);

        CellRange headRow2 = sheet.getCellRange(11, 1, 11, 5);
        //获取两个数据区域
        CellRange range1 = sheet.getCellRange(2, 1, 10, 6);
        CellRange range2 = sheet.getCellRange(12, 1, 17, 5);

        //添加一个工作表,命名为“Vendors”
        Worksheet sheet2 = bookOriginal.getWorksheets().add("Vendors");

        //将标题行1和数据区域1复制到“Vendors”工作表
        sheet.copy(headRow1, sheet2, 1, 1, true, false);
        sheet.copy(range1, sheet2, 2, 1, true, false);

        //添加一个工作表,命名为“Country List”
        Worksheet sheet3 = bookOriginal.getWorksheets().add("Country List");

        //将标题行2和数据区域2复制到“Country List”工作表
        sheet.copy(headRow2, sheet3, 1, 1, true, false);
        sheet.copy(range2, sheet3, 2, 1, true, false);

        //将第一个工作表中的列宽应用到新加的两个做工作表
        for (int i = 0; i < sheet.getLastColumn(); i++) {

            sheet2.setColumnWidth(i + 1, sheet.getColumnWidth(i + 1));
            sheet3.setColumnWidth(i + 1, sheet.getColumnWidth(i + 1));
        }

        //保存文档
        bookOriginal.saveToFile("output/SplitWorksheetIntoMultiSheets.xlsx", ExcelVersion.Version2016);
    }
}

拆分效果:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表