java 一个多shee表格文件根据sheet分成多个表格文件

一.把一个多shee表格文件根据sheet分成多个表格文件


package com.test;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;


public class ExcelTest {
    public static final String SAMPLE_XLSX_FILE_DownloadURL = "C:\\Users\\user\\Desktop\\测试.xlsx";

    /**
     * 创建分解Excel文件包
     * @param DownloadURL Excel文件来源路径url
     */
    public static void createDownload(String DownloadURL) throws IOException {
        try {
            // 1.读取源Excel文件
            Workbook workbook = WorkbookFactory.create(new File(DownloadURL));
            //Workbook workbook = WorkbookFactory.create(new File("C:\\Users\\Desktop\\2021测试.xlsx"));
            File file = new File(DownloadURL);
            String nd = file.getName().trim().substring(0, 5);

            // 2.创建文件夹,放置分解表格文件
            File fileFolder = new File(file.getParent() + "/" + nd);

            fileFolder.mkdir();//生成空文件夹

            String DownloadFile = file.getParent() + "/" + nd;

            // 3.获取源Excel文件中的所有表格数量
            int numberOfSheets = workbook.getNumberOfSheets();

            // 4.遍历每个表格
            for (int i = 0; i < numberOfSheets; i++) {
                // 获取当前表格
                Sheet sheet = workbook.getSheetAt(i);

                // 创建一个新的Excel文件
                Workbook newWorkbook = new XSSFWorkbook();

                // 创建一个表格,名称为Sheet标题
                Sheet newSheet = newWorkbook.createSheet(workbook.getSheetAt(i).getSheetName());

                // 获取当前表格的行数
                int rowCount = sheet.getLastRowNum();

                // 6.遍历每一行,并复制到新的Excel文件中
                for (int j = 0; j <= rowCount; j++) {

                    // 获取源Excel文件中的当前行
                    Row row = sheet.getRow(j);

                    // 创建新的Excel文件中的当前行
                    Row newRow = newSheet.createRow(j);

                    // 获取当前行的列数
                    int columnCount = row.getLastCellNum();

                    //7.遍历每一列,并复制到新的Excel文件中
                    for (int k = 0; k < columnCount; k++) {

                        // 获取源Excel文件中的当前单元格
                        Cell cell = row.getCell(k);

                        /*//把数字当成String来读,避免出现1读成1.0的情况
                        if (cell.getCellType() == CellType.NUMERIC) {
                            cell.setCellType(CellType.STRING);
                        }*/
                        //读取数据前设置单元格类型 加入这句就可以
                        cell.setCellType(CellType.STRING);

                        // 创建新的Excel文件中的当前单元格
                        Cell newCell = newRow.createCell(k);

                        // 复制当前单元格的值到新的Excel文件中
                        newCell.setCellValue(cell.getStringCellValue());
                    }
                }
                //8.保存文件到指定的文件夹
                FileOutputStream fileOut = new FileOutputStream(DownloadFile + "/" + nd + workbook.getSheetAt(i).getSheetName() + ".xlsx");
                //System.out.printf("生成文件路径:"+DownloadFile+"\\"+nd+workbook.getSheetAt(i).getSheetName()+".xlsx");
                newWorkbook.write(fileOut);//保存文件
                fileOut.close();//关闭文件
            }
            System.out.printf("生成分解Excel文件成功");
        } catch (IOException e) {
            System.out.printf("生成分解Excel文件失败", e);
        }
    }
    public static void main(String arg[]) throws IOException {
        createDownload(SAMPLE_XLSX_FILE_DownloadURL);
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
可以使用Python中的pandas库来实现将多个Excel文件sheet合并成一个Excel文件的不同sheet。 具体步骤如下: 1. 导入pandas库和os库 ```python import pandas as pd import os ``` 2. 定义一个函数,用于将一个Excel文件的所有sheet合并成一个DataFrame对象。 ```python def read_excel_sheets(file_path): sheets = pd.read_excel(file_path, sheet_name=None) sheet_names = list(sheets.keys()) df = pd.DataFrame() for sheet_name in sheet_names: sheet_df = sheets[sheet_name] sheet_df['sheet_name'] = sheet_name df = pd.concat([df, sheet_df], ignore_index=True) return df ``` 3. 定义一个函数,用于将一个文件夹下的所有Excel文件的所有sheet合并成一个Excel文件的不同sheet。 ```python def merge_excel_sheets(folder_path, output_file_path): files = os.listdir(folder_path) writer = pd.ExcelWriter(output_file_path) for file in files: file_path = os.path.join(folder_path, file) if os.path.isfile(file_path) and file.endswith('.xlsx'): df = read_excel_sheets(file_path) df.to_excel(writer, sheet_name=file[:-5], index=False) writer.save() ``` 在上面的代码中,`folder_path`参数指定要合并的Excel文件所在的文件夹路径,`output_file_path`参数指定生成的合并后的Excel文件的路径和文件名。 使用示例: ```python folder_path = 'excel_files' output_file_path = 'merged_excel.xlsx' merge_excel_sheets(folder_path, output_file_path) ``` 上述代码将`excel_files`文件夹下的所有Excel文件的所有sheet合并成了一个名为`merged_excel.xlsx`的Excel文件,其中每个sheet的名称对应于原来的Excel文件文件名。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

最爱で毛毛熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值