Matlab 导入 Excel 表数据的方法
1. 使用 UI 界面中的 导入数据 功能。
2. 在工作区直接导入复制的 Excel 内容
- 在工作区新建一个变量。
- 用鼠标双击这个变量,查看这个变量的内容:
- 从 Excel 表中直接 Ctrl + C 复制数据
- 直接在 变量的第一个单元格中鼠标右击,选择 ‘粘贴 Excel 数据’ 即可
3. 使用 A = xlsread(‘fileURL’, n)
n 取大于 0 的数字,表示读取 sheet n 的所有表格,不写 n 的时候会取 sheet 1 的所有数据。
函数直接读取 fileURL 所指文件的 sheet n 中的数据区域存储到双精度矩阵 A 中;其中,数据区域的选取规则是:对表格前几个含有非数值的行(列)直接忽略,不算入数据区域;另外如果在数据区域中含有非数值的单元,将其处理为 NaN。
clc;
tic;
clear all;
url = 'E:\Users\Sun and Snow\Desktop\葡萄酒2012A\附件1-葡萄酒品尝评分表.xls';
redAlcohol_1 = xlsread(url);
toc;
Excel 表的 sheet1 如下:
导入后的矩阵如下:
当我们把原始的 Excel 表格排版好之后,用这个先读取,再删除 非数字行 。不就很方便了?
删除矩阵第 k 列 :A(:, k) = [];
删除矩阵第 k 行:A(k, :) = [];
判断第 i 行元素是否全部为 NaN :isnan(A(i, :))
实例
这个文件 sheet2 表一共有 28 个子表。我打算把所有的数据全部抽出来,其余的无关单元格全部删除。比如 A、B、C 三列我就会全部删掉。最终结果是一个 280*10 矩阵。因为 每个 样品有 10 个指标,共28 个样品,所以 280 行。每个指标有 10 个人评价,所以 10 列。
源代码如下:
clc;
tic;
url = 'E:\Users\Sun and Snow\Desktop\葡萄酒2012A\附件1-葡萄酒品尝评分表.xls';
whiteAlcohol = xlsread(url, 2); % 导入 url Excel 文件的 sheet 2 所有信息。
whiteAlcohol_copy = whiteAlcohol; % copy 矩阵为导出后的矩阵的备份,用于与处理后的矩阵作比较
whiteAlcohol(:, 1:3) = []; % 删除不需要的列
whiteAlcohol(1, :) = []; % 删除不需要的行
[m, n] = size(whiteAlcohol);
%% 删除矩阵中每一个元素全部为 NaN 的 行向量
i = 1;
while i <= m
if isnan(whiteAlcohol(i, :)) % 判断第 i 行元素是否全部为 NaN
whiteAlcohol(i, :) = []; % 删除全部为 NaN 的第 i 行
m = m - 1; % 因为删除了矩阵的一行,矩阵的行总数 m 要 -1
continue; % i 指针因为删除了一行,新的一行元素还没有检查是否全部为 NaN,所以不能递增
end
i = i + 1; % i 指针指向下一行
end
toc;
处理前的矩阵:
处理后的矩阵:
4. 使用 A = xlsread(‘fileURL’, -1)
使用这个格式的 xlsread 后,会立即打开 对应的 Excel 表格,然后可以自己手动选择想要导入的表格范围,一切完成后,Excel 的表格会以矩阵的格式直接存储在 A 中。
clc;
tic;
url = 'E:\Users\Sun and Snow\Desktop\葡萄酒2012A\附件1-葡萄酒品尝评分表.xls';
redAlcohol_1 = xlsread(url, -1)
toc;
运行后,直接弹出 Excel 表格:
确定好要导入的表格范围后再点击 “确定”。
这种方法可以选择子表,但是终究是太繁琐了。
5. 使用 A = xlsread(‘url’, sheetNum, ‘range’)
url` 表示 Excel 文件位置
sheetNum 表示要读取 Excel 文件第 sheetNum 子表。
range 表示读取的单元格范围。
将选定范围的矩阵导入 A 变量。
6. [NUM, TXT, RAW] = xlsread(url, sheetNum)
对于如下的 表格:
NUM 存储 从 Excel 表中第一个纯数字开始的矩阵,非纯数字全部转化为 NaN。
TXT 存储 Excel 表中的所有字符串(非纯数字),并且尽量还原 Excel 表中的字符串位置,纯数字的单元格导入 matlab 后为 空。
RAW 存储 Excel 中所有的纯数字和字符串,但是 Excel 表格中为 未填写的单元格在 RAW 中为 NaN。