![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать - сколько строк в документе 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. Чтобы узнать, какая строка заполнена последней, насколько я знаю, нужно пробежаться по всем ячейкам и проверить значение. Менее тупого метода я не встречал.