Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать - сколько строк в документе Excel? [D7, 2000, XP]


СержК ©   (2007-10-15 11:23:00) 

Мастера подскажите.

Мне нужно проанализировать некоторый декумент Excel. Открываю его и хотел бы узнать - сколько в нем строк.

открываю документ следующим образом:

Com_fExcel.Com_Xl:=CreateOleObject('Excel.Application');
Com_fExcel.Com_Xl.Visible:=false;
Com_fExcel.Com_Xl.DisplayAlerts:=false;
Com_fExcel.Com_Book:=Com_fExcel.Com_Xl.WorkBooks.Open(Main_current_dirrectory+'\Temp.xls');
Com_fExcel.Com_Sheet:=Com_fExcel.Com_Xl.Workbooks[1].Worksheets[1];


umbra   (2007-10-15 14:55:00) [1]

и у меня нюанс :) В [8] надо

LastUsedRowIndex := worksheets[1].rows[worksheets[1].usedrange.row].row + worksheets[1].usedrange.rows.Count - 1;


Skyle   (2007-10-15 14:21:00) [2]


> stone ©   (15.10.07 14:12) [11]
> Есть один ньюанс. Ячейка может не содержать текста, но при
> этом не являться пустой.

Ну если ожидаются такие файлы, то это не ньюанс. Если ожидается только текст, то тоже неплохо.

Есть другой ньюанс в моём варианте (есть ли он в [8] я не знаю). И в случае пустого листа, И в случае, когда занята только первая строка, возвращается 1.


stone   (2007-10-15 14:12:00) [3]


> Skyle ©   (15.10.07 13:33) [10]


> umbra ©   (15.10.07 13:30) [8]

Есть один ньюанс. Ячейка может не содержать текста, но при этом не являться пустой.


Skyle   (2007-10-15 13:33:00) [4]

Sheet.SpecialCells(xlLastCell).EntireRow


СержК   (2007-10-15 13:32:00) [5]

Огромное спасибо - кажется это то, что мне нужно!!!
Сейчас буду пробовать.


umbra   (2007-10-15 13:30:00) [6]

LastUsedRowIndex := worksheets[1].rows[worksheets[1].usedrange.row].row + worksheets[1].usedrange.rows.Count;


СержК   (2007-10-15 13:24:00) [7]

Нужна последняя использованная на листе строка


umbra   (2007-10-15 13:16:00) [8]

а какая строка нужная? Поскольку Worksheet.UsedRangeэто диапазон, то у него есть св-во Rows, а у того - свойство Count. Если лист заполняется не с первой строки, то номер первой использованной на листе строки можно узнать, например, так -
worksheets[1].rows[ActiveSheet.usedrange.row].row


СержК   (2007-10-15 13:03:00) [9]

А как мне используя свойство Worksheet.UsedRange узнать номер нужной строки?


umbra   (2007-10-15 12:27:00) [10]

свойство Worksheet.UsedRangeвозвращает диапазон, охватывающий все строки и столбцы, в которые занесены значения.


dmdel   (2007-10-15 12:02:00) [11]

Попробуй нажать Ctrl+End и посмотреть как он в макросе прописывается
Ну и соответственно перенести этот код в Delphi


СержК   (2007-10-15 11:58:00) [12]

Да мне действительно мне нужен номер последней заполненной строки. Но простой перебор мне не подходит - слишком долго.


DrPass   (2007-10-15 11:54:00) [13]

Строк - как и в любом другом документе Excel, ровно 65535. Чтобы узнать, какая строка заполнена последней, насколько я знаю, нужно пробежаться по всем ячейкам и проверить значение. Менее тупого метода я не встречал.


Наверх

Титульная страница Поиск, карта сайта Написать письмо