Главная страница
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.014 c
2-1192104275
tytus
2007-10-11 16:04
2007.11.04
функция определения выбранного item-a


15-1190887121
Washington
2007-09-27 13:58
2007.11.04
Программирование автомагнитолы


15-1191597227
Kantemir_maslov
2007-10-05 19:13
2007.11.04
TMemo c CheckBox ами


15-1190800801
ТТ
2007-09-26 14:00
2007.11.04
компиляция-оптимизация


1-1187361496
Farel
2007-08-17 18:38
2007.11.04
interbase