【问题标题】:Preventing xlsread from importing formatted but empty cells防止 xlsread 导入格式化但为空的单元格
【发布时间】:2021-09-13 19:11:40
【问题描述】:

我正在通过 xlsread 读取 Excel 文件并创建原始值的元胞数组:[~, ~, raw_values] = xlsread(filename,'sheet1');

工作表中的某些单元格以前包含值,这些值已被删除。但是,raw_values 的尺寸仍然覆盖了这些值曾经的范围。因此,raw_values 包含许多尾随列,这些列只包含 NaN。

我在 Excel 中看不到先前包含值的单元格与不包含值的单元格之间的差异。两者的格式都是“标准”。但是,如果我使用格式刷将格式从未污染的单元格复制到受影响的单元格,则 xlsread 将不再导入该列。

如何防止这些尾随 NaN 列(和行)被 xlsread 创建或以优雅的方式删除它们?

【问题讨论】:

    标签: excel matlab


    【解决方案1】:

    首先:不建议从 R2019a 开始使用xlsread(请参阅doc)。 因此,如果您不需要向后兼容性,我会改用readtable

    使用 readtable 您可以指定一堆导入选项,例如如何处理缺失值或指定要导入的范围cf. spreadheet import options

    如果您仍然需要删除 nan 值,一种优雅的方法是使用 isnan() 构建一个逻辑数组,然后使用该数组删除相应的行/列。 示例:

    AA = [magic(5) nan(5,1)];
    disp(AA)
    idxNanCol = all(isnan(AA));
    AA(:, idxNanCol) = [];
    disp(AA)
    

    【讨论】:

      【解决方案2】:

      以下代码应返回一个矩阵,指示 raw_values 的哪个位置不是 NaN

      index=~cellfun(@isnan,raw_values)
      

      如果您只想保留非 NaN 值:

      raw_values(index)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-28
        • 1970-01-01
        • 1970-01-01
        • 2016-03-26
        • 2017-03-08
        • 1970-01-01
        • 1970-01-01
        • 2022-07-31
        相关资源
        最近更新 更多