我需要使用matlab编程删除excel文件中空列的所有行。 我有多个excel文件,数据格式如下:
admin img1 1
admin img2 1
admin img3 1
admin img4 1
我需要删除所有这些不包含任何数据的文件中的所有空白行。
我找到了一个很棒的代码片段,它满足了我的要求,但它只删除了数字数据。
问:\以下代码删除所有仅包含数字数据的行,如果删除行包含字符串数据,我们必须执行哪些修改?如果我有许多excel文件,还会再做一件事?
e = actxserver ('Excel.Application'); %// open Activex server
ewb = e.Workbooks.Open('c:\test\test.xlsx'); %// open file (enter full path)
eur = ewb.ActiveSheet.UsedRange; %// lets simplify using active sheet
data = cell2mat(eur.Value); %// get numeric data
idx = find(any(isnan(data),2))'; %'// find rows with empty (or text) cells
for k=idx(end:-1:1)
eur.Rows.Item(k).Delete; %// delete entire row from the last one
end
ewb.Save %// save to the same file
ewb.Close(false)
e.Quit
答案 0 :(得分:1)
这是我的解决方案。我使用testxls.xlsx作为示例源。它有空单元格。
首先导入文件:使用导入模块并将数据导入为单元格数组。导入模块可以为您生成代码,以便稍后批处理所有文件。
[~, ~, data] = xlsread('C:\Users\xxx\Documents\MATLAB\testxls.xlsx','Sheet1');
data(cellfun(@(x) ~isempty(x) && isnumeric(x) && isnan(x), data)) = {''};
然后处理单元格数组,丢弃具有空单元格的行。然后将生成的数组保存到excel文件中。
ii = 1;
while true
try
if any(strcmp('', data(ii,:))) % find rows with empty cell
data(ii,:) = []; % remove the row
else
ii = ii+1;
end
catch
break % When the process goes beyond the end, stop the loop.
end
end
xlswrite('processed.xlsx', data)
答案 1 :(得分:0)
你试过了吗? 1.突出显示列或行 2.单击编辑选项卡,然后选择转到 3.然后选择特殊然后空白 4.然后转到主页,在单元格下,您可以删除行或列