如何使用字符串和数值删除整行

时间:2015-08-13 08:49:23

标签: excel matlab

我需要使用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 

2 个答案:

答案 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.然后转到主页,在单元格下,您可以删除行或列