2012-04-14 20 views
5

Czy istnieje polecenie Matlaba, aby uzyskać liczbę zapisanych wierszy w pliku Excel? po pierwsze, wypełniam pierwszy wiersz. a następnie chcę dodać kolejne wiersze w pliku excel. więc to jest mój plik excel: enter image description hereLiczba wierszy Matlaba w pliku Excel

Próbowałem:

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 

Ale num_rows = 1048576, zamiast 1. proszę o pomoc, dziękuję!

+0

Czy twój plik jest naprawdę pusty? Czasami możesz tworzyć puste komórki w programie Excel i nie możesz mieć pewności, że ich tam nie ma. Utwórz nowy plik i przetestuj kod, aby zobaczyć, co się stanie. – Castilho

+0

@Castilho Próbowałem tego, co sugerowałeś, ale num_rows wciąż jest równe 1048576. dziękuję. –

Odpowiedz

4

Jeśli plik jest pusty lub zawiera dane tylko w jednym wierszu, wówczas .End('xlDown').Row; zostanie przeniesiony na samo dno arkusza (1048576 to liczba wierszy w arkuszu Excel 2007+).

Sprawdź, czy komórka A2 jest pusta pierwsza, i zwróć 0, jeśli jest.

Albo użyć Up od dołu arkusza

num_rows = sheetObj.Cells(sheetObj.Rows.Count, 1).End('xlUp').Row 

Uwaga: Nie jestem pewien składni Matlab, więc to może trzeba jakiś dostosowanie

+0

dziękuję, ale to nie działa, zaktualizowałem mój temat .. –

+0

Tylko jeden wiersz zachowuje się tak samo jak brak danych (spróbuj 'Ctrl-Down' w programie Excel, aby zobaczyć jak to działa) Zobacz moją edycję –

+0

dziękuję bardzo! ! :]] –

1

Można użyć xlsread funkcji MATLAB do odczytu w arkuszu kalkulacyjnym. Ten uzyskuje następujące pola:

[numbers strings misc] = xlsread('myfile.xlsx'); 

jeśli zrobisz size kontrolę strings lub misc, to powinno dać następujące: nic innego

[rows columns] = size(strings); 

testowanie tego, mam rows = 1, columns = 10 (zakładając był poza "A" w arkuszu kalkulacyjnym).