当前位置: 首页 > 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.xdnf.cn/news/1330579.html

相关文章:

  • 四川方言语音识别数据集,1500小时合规真人采集,高质量标注助力ASR与大模型训练
  • CISP-PTE之路--10文
  • java17学习笔记
  • python numpy.random的基础教程(附opencv 图片转数组、数组转图片)
  • cv2.bitwise_and是 OpenCV 中用于执行按位与运算的核心函数,主要用于图像处理中的像素级操作
  • 计算机视觉 图片处理 在骨架化过程中,每次迭代都会从图像的边缘移除一层像素,直到只剩下单像素宽度的骨架
  • 【图像算法 - 19】慧眼识苗:基于深度学习与OpenCV的大棚农作物生长情况智能识别检测系统
  • Kubernetes集群安装部署--flannel
  • InnoDB为什么使用B+树实现索引?
  • 从繁琐到优雅:Java Lambda 表达式全解析与实战指南
  • 【Spring Boot把日志记录到文件里面】
  • sfc_os!SfcQueueValidationRequest函数分析之sfc_os!IsFileInQueue
  • Android面试指南(三)
  • STM32学习笔记15-SPI通信软件控制
  • 《Java 多线程全面解析:从基础到生产者消费者模型》
  • InfoNES模拟器HarmonyOS移植指南
  • 从数据孤岛到实时互联:Canal 驱动的系统间数据同步实战指南
  • 排查Redis数据倾斜引发的性能瓶颈
  • python学习DAY46打卡
  • 迁移学习(Transfer Learning)
  • C语言:字符函数与字符串函数(1)
  • Go 进阶学习路线
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(17):文法+单词第5回3-复习
  • 《算法导论》第 32 章 - 字符串匹配
  • 云电脑 vs 传统PC:全面对比3A游戏与AI训练的成本与性能
  • 网络间的通用语言TCP/IP-网络中的通用规则3
  • 基于提示词工程和MCP构建垂直Agent应用
  • STM32 vscode 环境, 官方插件
  • 前端多环境变量配置全攻略:开发 / 测试 / 生产自动切换实战
  • 微信小程序连接到阿里云物联网平台