当前位置: 首页 > news >正文

如何使用matlab将目录下不同的excel表合并成一个表

一、前言

小黑娃已经很久没上线更新文章了,因为工作和科研的双重压力,小黑娃便忽略C站很久了。今天即兴更新一篇,希望大家多多支持。有时候我们某个文件夹下有多个excel表,然后我们又想将他们合并成一个excel(多个sheet),那我们该怎么做呢?

二、核心步骤及代码

1、首先写一个 MATLAB 脚本,能够从文件夹中读取多个 Excel 文件,并将它们合并到一个总 Excel 文件中,每个文件放在一个单独的 sheet 里,代码如下:


% 选择文件夹
folderPath = uigetdir(pwd, '请选择包含 Excel 文件的文件夹');
if folderPath == 0error('未选择文件夹,程序终止。');
end% 获取该文件夹下所有 Excel 文件(扩展名可能是 .xls 或 .xlsx)
files = dir(fullfile(folderPath, '*.xls*'));% 如果没有找到 Excel 文件
if isempty(files)error('该文件夹下没有 Excel 文件!');
end% 设置合并后的文件名(存放在同一目录下)
outputFile = fullfile(folderPath, '合并结果.xlsx');% 遍历每个文件
for i = 1:length(files)% 读取文件路径fileName = files(i).name;filePath = fullfile(folderPath, fileName);% 读取表格data = readtable(filePath);% 去掉扩展名作为 sheet 名(避免过长或非法字符)[~, sheetName, ~] = fileparts(fileName);% Excel sheet 名最大31个字符,超过需要截断if length(sheetName) > 31sheetName = sheetName(1:31);end% 将数据写入目标文件的对应 sheetwritetable(data, outputFile, 'Sheet', sheetName);fprintf('文件 %s 已写入 sheet: %s\n', fileName, sheetName);
endfprintf('合并完成!结果文件保存在:%s\n', outputFile);
  • 把上述代码保存为 merge_excel.m

  • 运行后,会弹出一个窗口,让你选择包含多个 Excel 文件的文件夹。

  • 程序会把该文件夹里的所有 .xls.xlsx 文件合并成一个 合并结果.xlsx 文件。这部分代码如下:

    files = dir(fullfile(folderPath, '*.xls*'));
  • 每个 Excel 文件对应一个 sheet,sheet 的名字就是原文件名(过长会自动截断)。

上述代码会把文件夹下所有的excel进行合并,非常不友好,所以我们采取更合理、更便捷的读取方式。

2、手动多选 Excel 文件,这样在运行的时候,我们就可以自己选中几个文件(而不是整个文件夹全部读),代码如下:

% 合并多个 Excel 文件到一个 Excel 文件中(手动选择)
[files, folderPath] = uigetfile({'*.xls;*.xlsx','Excel Files (*.xls, *.xlsx)'}, ...'请选择要合并的Excel文件', ...'MultiSelect', 'on');% 如果用户取消选择
if isequal(files,0)error('未选择文件,程序终止。');
end% 转换成 cell 数组(如果只选一个文件,uigetfile返回字符串)
if ischar(files)files = {files};
end% 输出文件名
outputFile = fullfile(folderPath, '合并结果.xlsx');for i = 1:length(files)fileName = files{i};filePath = fullfile(folderPath, fileName);% 读取表格data = readtable(filePath);% 生成 sheet 名[~, sheetName, ~] = fileparts(fileName);if length(sheetName) > 31sheetName = sheetName(1:31);end% 写入writetable(data, outputFile, 'Sheet', sheetName);fprintf('已写入: %s -> sheet %s\n', fileName, sheetName);
endfprintf('合并完成!结果文件在:%s\n', outputFile);

3、我们也可以在程序里写死要合并的文件名,比如我们只想合并 文件1.xlsx文件2.xlsx,那可以写成:

folderPath = 'C:\Users\你的用户名\Desktop\新建文件夹'; % 文件夹路径
fileList = {'文件1.xlsx', '文件2.xlsx'}; % 指定要合并的文件outputFile = fullfile(folderPath, '合并结果.xlsx');for i = 1:length(fileList)filePath = fullfile(folderPath, fileList{i});data = readtable(filePath);[~, sheetName, ~] = fileparts(fileList{i});if length(sheetName) > 31sheetName = sheetName(1:31);endwritetable(data, outputFile, 'Sheet', sheetName);
end

博主的每篇博文都是用心去写的,喜欢的可以多多支持和收藏,创作不易,未经作者允许,请勿转载或者抄袭。

http://www.lryc.cn/news/626328.html

相关文章:

  • python中view把矩阵维度降低的时候是什么一个排序顺序
  • 系统架构设计师备考第1天——系统架构概述
  • 深入Linux内核:架构设计与核心功能解析
  • 车联网(V2X)中万物的重新定义---联网汽车新时代
  • 自动驾驶汽车机器学习安全实用解决方案
  • RK android14 Setting一级菜单IR遥控器无法聚焦问题解决方法
  • Building Systems with the ChatGPT API 使用 ChatGPT API 搭建系统(第二章学习笔记及总结)
  • 汽车ECU实现数据安全存储(机密性保护)的一种方案
  • 【openssl】openssl CA.pl 签发证书操作步骤
  • Redis String全方位指南:命令、编码、时间复杂度与应用场景
  • RK-Android11-PackageInstaller安装器自动安装功能实现
  • KubeBlocks AI:AI时代的云原生数据库运维探索
  • 3D文档控件Aspose.3D实用教程:使用 C# 构建 OBJ 到 U3D 转换器
  • Origin将普通点线图升级为3D点线图
  • ETL 工具选型评测:2025 年 Top 5 工具优缺点对比(附评分表)
  • 【自记】Power BI 中FILTER、CALCULATE 和 CALCULATETABLE 三个函数详细说明
  • React框架超详细入门到实战项目演练【前端】【React】
  • React15.x版本 子组件调用父组件的方法,从props中拿的,这个方法里面有个setState,结果调用报错
  • 【Coze】Windows 环境下使用 Docker 部署 Coze Studio 的详细指南
  • 基于分布式环境的令牌桶与漏桶限流算法对比与实践指南
  • Day 40:训练和测试的规范写法
  • 008.Redis Cluster集群架构实践
  • RabbitMQ:SpringAMQP Topic Exchange(主题交换机)
  • Linux中Cobbler服务部署与配置(快速部署和管理 Linux 系统)
  • mac电脑软件左上角的关闭/最小化/最大化按钮菜单的宽度和高度是多少像素
  • Mac 4步 安装 Jenv 管理多版本JDK
  • Mac 上安装并使用 frpc(FRP 内网穿透客户端)指南
  • 第四章:大模型(LLM)】07.Prompt工程-(4)思维链(CoT, Chain-of-Thought)Prompt
  • 第四章:大模型(LLM)】07.Prompt工程-(5)self-consistency prompt
  • 编译安装 Nginx