Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1190841455
Riply
2007-09-27 01:17
2007.11.04
Avast 4.7 and Visibroker


15-1191493613
Jeer
2007-10-04 14:26
2007.11.04
С праздником !


15-1191350874
ProgRAMmer Dimonych
2007-10-02 22:47
2007.11.04
Может быть, у кого-нибудь программка завалялась...


15-1191080077
andreil
2007-09-29 19:34
2007.11.04
Помогите с конвертацие проги с С++


2-1191954003
sdaf
2007-10-09 22:20
2007.11.04
IB





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский