Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.04;
Скачать: CL | DM;

Вниз

Как узнать - сколько строк в документе Excel?   Найти похожие ветки 

 
СержК   (2007-10-15 11:23) [0]

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

Мне нужно проанализировать некоторый декумент 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];


 
DrPass ©   (2007-10-15 11:54) [1]

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


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

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


 
dmdel ©   (2007-10-15 12:02) [3]

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


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

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


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

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


 
umbra ©   (2007-10-15 13:16) [6]

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


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

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


 
umbra ©   (2007-10-15 13:30) [8]

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


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

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


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

Sheet.SpecialCells(xlLastCell).EntireRow


 
stone ©   (2007-10-15 14:12) [11]


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


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

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


 
Skyle ©   (2007-10-15 14:21) [12]


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

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

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


 
umbra ©   (2007-10-15 14:55) [13]

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

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



Страницы: 1 вся ветка

Текущий архив: 2007.11.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
2-1192435330
Quart
2007-10-15 12:02
2007.11.04
CachedUpdates


2-1192194729
PPointer
2007-10-12 17:12
2007.11.04
Текстовый файл


2-1191952011
SveTTT
2007-10-09 21:46
2007.11.04
Коды кнопок


2-1191930542
ффф
2007-10-09 15:49
2007.11.04
фастрепорт


15-1191741805
Инглиш
2007-10-07 11:23
2007.11.04
Экскурсия