【发布时间】:2015-07-20 21:06:18
【问题描述】:
我使用具有 8GB RAM 和 Matlab 64 位的 Windows 64 位。
我试图将 .xlsx 文件加载到 matlab 中。文件大小约为 700MB,包含 673928 行 43 列的工作表。
首先我使用 GUI 工具“uiimport”。选择文件路径和名称后,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() 出现同样的问题。
我的问题是:
1. GUI 导入工具是否使用 xlsread() 读取 .xlsx 文件?如果是,为什么生成的函数不起作用?如果不是,它使用哪个接口?
2. 有没有一种高效的方式将 Excel 文件加载到 Matlab 中?
谢谢!
【问题讨论】: