我使用Windows 64bit,8GB RAM和Matlab 64bit .
我试图将.xlsx文件加载到matlab中 . 文件大小约为700MB,包含673928行和43列的工作表 .
首先,我使用GUI工具'uimport' . 选择文件路径和名称后,GUI工具需要大约3分钟才能读取.xlsx文件,然后在表格中显示数据 . 如果我选择“单元阵列”,则需要大约10分钟将数据导入工作区 .
>>whos
Name Size Bytes Class Attributes
NBPPdataV3YOS1 673928x43 3473588728 cell
它工作得很好,但我有很多.xlsx文件要导入 . 使用GUI工具导入每个文件是不可能的 . 所以我使用GUI工具生成这样的函数
function data = importfile(workbookFile, sheetName, range)
%% Import the data
[~, ~, data] = xlsread(workbookFile, sheetName, range);
data(cellfun(@(x) ~isempty(x) && isnumeric(x) && isnan(x),data)) = {''};
简单地说,我忽略了一些不相关的代码 . 但是,当我使用此函数导入数据时,它不能很好地工作 . Matlab和Excel使用的RAM大幅增加,直到几乎所有的RAM都被使用 . 30分钟后无法导入数据 .
我也试着这样做,
filename='E:\data.xlsx';
excelObj = actxserver('Excel.Application');
fileObj = excelObj.Workbooks.Open(filename);
sheetObj = fileObj.Worksheets.get('Item', 'sheet2');
%Read in ranges the same way as xlsread!
indata = sheetObj.Range('A1:AQ673928').Value;
xlsread()也会出现同样的问题 .
我的问题是:
GUI导入工具是否使用xlsread()来读取.xlsx文件?如果是,为什么生成的函数不起作用?如果不是,它使用哪个界面?
2.有没有一种有效的方法将Excel文件加载到Matlab中?
谢谢!