poster
2019-12-10, 20:30
我正在通过MATLAB生成一个Excel文件,中间有空单元格。这是我用来初始化一个空矩阵的代码:
newfile = cell(5,5); [newfile{:}] = deal(''); [newfile{:}] = deal(' '); 然后,我进行一些处理,然后使用XLSWRITE将数据写入文件。电子表格最终会有一些空白单元格和一些数据。是否有一个命令可以删除空白行而不影响其中有数据的行?
另一个问题:
有没有一种方法可以附加到此Excel文件中?我每天都运行此文件,并且希望自动添加数据,而不是每天手动复制和粘贴。
++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++以上问题的补充:
如果我的输出文件看起来像
1.8 3 -4.7
1.87 3.9 -5.8
1.84 2.8 -4.3
2 3.2 -4.7
2 3.7 -6
2 3.6 -5.2
3 4.3 -6.5
13 4.2 13.1
12 3.5 -6.3
1.65 1.9 -4.4
所以当它不在单元格中时如何删除空行,因为cellfun不适用于此
回答:
如果我正确理解了问题的第一部分,则希望删除newfile单元数组中仅包含空单元格的所有行。您可以使用函数CELLFUN (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/cellfun.html)查找空单元格,使用函数ALL (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/all.html)查找包含所有空单元格的行,然后使用逻辑索引 (http://www.mathworks.com/access/helpdesk/help/techdoc/math/f1-85462.html#bq7egb6-1)删除这些行:
>> newfile = cell(5,5); %# Empty cell array >> newfile(:) = {''}; %# A different way to assign values without DEAL >> newfile([1 2 4 5]) = {'a'} %# Make some non-empty cells newfile = 'a' '' '' '' '' 'a' '' '' '' '' '' '' '' '' '' 'a' '' '' '' '' 'a' '' '' '' '' >> emptyIndex = cellfun('isempty',newfile) %# Logical index of empty cells emptyIndex = 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 >> newfile = newfile(~all(emptyIndex,2),:) %# Removes 3rd row newfile = 'a' '' '' '' '' 'a' '' '' '' '' 'a' '' '' '' '' 'a' '' '' '' '' 编辑:如果用空格( ' ' )而不是空字符串( '' )初始化单元格数组newfile ,则必须更改上述代码中计算emptyIndex的方式。 CELLFUN (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/cellfun.html)参数'isempty'应该更改为@(x) strcmp(x,' ')以获得相同的结果。
关于第二个问题,您可以在对XLSWRITE (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/xlswrite.html)的调用中指定要在其中添加数据的文件中的工作表和行/列范围。如果每天添加一次文件,最简单的解决方案可能是添加一个以日期为名称的新工作表。下面的代码将M的数据写入文件fileName ,添加一个以当前日期和时间命名的新工作表:
xlswrite(fileName,M,datestr(now));
更多&回答... (https://stackoverflow.com/questions/2428742)
newfile = cell(5,5); [newfile{:}] = deal(''); [newfile{:}] = deal(' '); 然后,我进行一些处理,然后使用XLSWRITE将数据写入文件。电子表格最终会有一些空白单元格和一些数据。是否有一个命令可以删除空白行而不影响其中有数据的行?
另一个问题:
有没有一种方法可以附加到此Excel文件中?我每天都运行此文件,并且希望自动添加数据,而不是每天手动复制和粘贴。
++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++以上问题的补充:
如果我的输出文件看起来像
1.8 3 -4.7
1.87 3.9 -5.8
1.84 2.8 -4.3
2 3.2 -4.7
2 3.7 -6
2 3.6 -5.2
3 4.3 -6.5
13 4.2 13.1
12 3.5 -6.3
1.65 1.9 -4.4
所以当它不在单元格中时如何删除空行,因为cellfun不适用于此
回答:
如果我正确理解了问题的第一部分,则希望删除newfile单元数组中仅包含空单元格的所有行。您可以使用函数CELLFUN (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/cellfun.html)查找空单元格,使用函数ALL (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/all.html)查找包含所有空单元格的行,然后使用逻辑索引 (http://www.mathworks.com/access/helpdesk/help/techdoc/math/f1-85462.html#bq7egb6-1)删除这些行:
>> newfile = cell(5,5); %# Empty cell array >> newfile(:) = {''}; %# A different way to assign values without DEAL >> newfile([1 2 4 5]) = {'a'} %# Make some non-empty cells newfile = 'a' '' '' '' '' 'a' '' '' '' '' '' '' '' '' '' 'a' '' '' '' '' 'a' '' '' '' '' >> emptyIndex = cellfun('isempty',newfile) %# Logical index of empty cells emptyIndex = 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 >> newfile = newfile(~all(emptyIndex,2),:) %# Removes 3rd row newfile = 'a' '' '' '' '' 'a' '' '' '' '' 'a' '' '' '' '' 'a' '' '' '' '' 编辑:如果用空格( ' ' )而不是空字符串( '' )初始化单元格数组newfile ,则必须更改上述代码中计算emptyIndex的方式。 CELLFUN (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/cellfun.html)参数'isempty'应该更改为@(x) strcmp(x,' ')以获得相同的结果。
关于第二个问题,您可以在对XLSWRITE (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/xlswrite.html)的调用中指定要在其中添加数据的文件中的工作表和行/列范围。如果每天添加一次文件,最简单的解决方案可能是添加一个以日期为名称的新工作表。下面的代码将M的数据写入文件fileName ,添加一个以当前日期和时间命名的新工作表:
xlswrite(fileName,M,datestr(now));
更多&回答... (https://stackoverflow.com/questions/2428742)