Matlab Excel文件中的行数

5
有没有Matlab命令可以获取Excel文件中已写行的数量? 首先,我填充第一行。然后我想在Excel文件中添加另外的行。 这是我的Excel文件: enter image description here 我尝试了:
e = actxserver ('Excel.Application');
filename = fullfile(pwd,'example2.xlsx');
ewb = e.Workbooks.Open(filename);
esh = ewb.ActiveSheet;

sheetObj = e.Worksheets.get('Item', 'Sheet1');
num_rows = sheetObj.Range('A1').End('xlDown').Row

但是num_rows的值为1048576,而不是1。 请帮忙解决,谢谢!

你的文件真的是空的吗?有时候在Excel中会创建空白单元格,而你无法确定它们是否存在。创建一个新文件并测试代码,看看会发生什么。 - Castilho
我尝试了你建议的方法,但是num_rows仍然等于1048576。谢谢。 - Alon Shmiel
2个回答

4
如果文件为空或仅包含一行数据,则 .End('xlDown').Row; 会移动到工作表的底部(1048576 是 Excel 2007+ 工作表中行数的数量)。请先测试单元格 A2 是否为空,如果是,则返回 0。或者从工作表底部使用 Up
num_rows = sheetObj.Cells(sheetObj.Rows.Count, 1).End('xlUp').Row 

注意:我不确定Matlab语法,所以可能需要进行一些调整。

只有一行数据时与无数据情况下表现相同(尝试在Excel中按下 Ctrl-Down 键查看其运作方式)。请参考我的编辑。 - chris neilsen

2
您可以使用MATLAB的xlsread函数来读取电子表格。这将获得以下字段:
[numbers strings misc] = xlsread('myfile.xlsx');

如果你在strings或者misc上进行size检查,应该会得到以下结果:

[rows columns] = size(strings);

测试结果为,我得到了行数=1列数=10(假设电子表格中'A'以外没有其他内容)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接