Форум: "Начинающим";
Текущий архив: 2007.11.04;
Скачать: [xml.tar.bz2];
ВнизКак узнать - сколько строк в документе 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c