Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: ActiveX/СОМ/CORBA > Как узнать, закончились ли строки в excel файле? |
Автор: sgentstuff 10.7.2006, 09:52 |
как организовать цикл до конца строк? |
Автор: Albinos_x 10.7.2006, 11:09 |
http://forum.vingrad.ru/index.php?showtopic=84634&view=all |
Автор: sgentstuff 10.7.2006, 11:30 |
там про word есть но про excel я не нашел |
Автор: Akella 11.7.2006, 08:46 | ||
поищи по форуму, я выкладывал примеры работы с Excel`ем |
Автор: sgentstuff 11.7.2006, 13:27 | ||
мне нужно для нужной книги для нужного листа узнать кол-во строк например вот так:
но так не работает! |
Автор: Albinos_x 11.7.2006, 15:29 |
В чём это выражается? |
Автор: sgentstuff 11.7.2006, 17:51 | ||
Я не испоьзую компоненту, а просто через ОЛЕ, как правильно записать получение количества строк?
на эту запись он выдает такую ошибку: EOleSysError with message 'Ivalid number of parameters' |
Автор: Albinos_x 12.7.2006, 11:40 | ||
попробуй вот так:
Что за [p+1] ? |
Автор: sgentstuff 12.7.2006, 12:10 | ||
с
тоже самое p+1 - это просто номер книги, в других местах с p+1 все нормально, можешь у себя проверить как этот код работает, но только без компоненты ExcelAplication |
Автор: Albinos_x 12.7.2006, 14:03 | ||||
попробуй так:
если не прокатит,то делай стандартным способом:
WorkSheet : OleVariant; у последнего только один недостаток: если на странице стоит защита, то будет вылетать ошибка... |
Автор: sgentstuff 13.7.2006, 05:56 | ||
ура, это сработало, но к сожалению работает только если строки идут подподряд и между ними нету пропуска
а если вот так ф1 ф2 ф3 ф4 ф5 ф6 ф1 ф2 ф3 ф4 ф5 ф6 ф1 ф2 ф3 ф4 ф5 ф6 ф1 ф2 ф3 ф4 ф5 ф6 ф1 ф2 ф3 ф4 ф5 ф6 то ответ будет 3 строки а не 6(вкл и пустую), как подсчитать количество, если есть пропуски? |
Автор: sgentstuff 13.7.2006, 06:52 |
у меня много Excel файлов, в каждом не менее 30000 строк, перед обработкой каждогго файла мне нужно узнать количество строк чтобы знать до куда запускать цикл, но попадаются и пустые строки, даже не знаю что делать, может это как-то по другому можно сделать? нужна помощь! |
Автор: Albinos_x 13.7.2006, 09:34 |
сделай вторым способом... |
Автор: sgentstuff 13.7.2006, 13:34 |
вторым способом попробывал пишет метод Activate из класса Range завершен не верно в чем загвоздка? |
Автор: sgentstuff 13.7.2006, 14:00 |
у меня excel 2000 может из-за этого? |
Автор: Albinos_x 13.7.2006, 19:10 |
нет не из-за этого... если посмотреть, то второй код применяется довольно давно и успешно... и если будешь искать примеры по инету, то почти везде найдёшь именно второй способ... а ошибка возможно в строчках позже... на какой строчке ошибка вылезает? |
Автор: sgentstuff 14.7.2006, 05:35 |
ошибка именно на этой строке: WorkSheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate; |
Автор: Albinos_x 14.7.2006, 08:28 |
код в студию... |
Автор: sgentstuff 14.7.2006, 09:43 | ||
var
эта ошибка вылетает если открыты две книги как ы этом примере, если же открыть только одну книгу то все нормально, считает как надо, у меня в программе открыто несколько книг, что делать? |
Автор: sgentstuff 14.7.2006, 10:47 |
ура получилось. просто нужно активировать книгу Excel.WorkBooks[1].Activate; тогда все работает нормально Albinos_x - спасибо, выручил! |
Автор: Albinos_x 14.7.2006, 13:43 | ||||
честно говоря по твоему коду ничего не понятно.... к примеру:
зачем открывать две книги... связь-то у тебя только со второй... ну да ладно... может код не весь...
зато здесь мы возвращаемся к первой книге... тогда зачем вторая (?)... и далее не понятно зачем в цикле четыре раза вычеслять количество строк на одном и том же листе?... |
Автор: Albinos_x 14.7.2006, 14:03 |
отсюда кстати и ошибка вылезала... работал со второй книгой... а число строк на листе пытался получить из первой книги... |
Автор: sgentstuff 14.7.2006, 14:47 |
отсюда кстати и ошибка вылезала... работал со второй книгой... а число строк на листе пытался получить из первой книги... ЭТО ТОЧНО, теперь все понятно! |
Автор: Albinos_x 14.7.2006, 15:07 |
Удачи! ![]() |
Автор: oleg153 2.3.2007, 22:59 | ||||
Господа! Подскажите пожалуйста, все что можно прочитать я перечитал и рад что у всех работает. Но я потратил сутки но не смог добится номера последней заполненной строки на листе Excel. Перепробовал все, но и в delphi7 и delphi 2006 (studio) одна и таже проблемма : компилятор наотрез не понимает xlCellTypeLastCell. И там и там ошибка Undeclired Identifire 'xlCellTypeLastCell'. И все. Процесс умирает. Я не понимаю в чем дело, ЧТО я не так пишу ??? Вот мой код , в таком виде он не работает:
Случайно наткнулся по яндексу на пример где отдельно обьявлялся этот параметр таким образом
Тогда ошибка пропала и все заработало. Получается что если не используем компоненту ExcelApp то это нужно ОБЯЗАТЕЛЬНО делать ? тогда почему об этом никто не упоминает ??? |
Автор: Albinos_x 2.3.2007, 23:43 | ||
1. Следовало бы создать отдельную тему. 2. константа - xlCellTypeLastCell объявлена в модуле OfficeXP (/2000/97) 3. Объявлять константу не обязательно, можно и напрямую писать:
4. Excel у всех под рукой (или почти у всех, но у них и такие приложения работать не будут...), в справке по VB можно посмотреть значение любой из этих констант... |
Автор: RosemaN 7.11.2007, 00:52 | ||||||
1. в таком варианте пишет "could not convert variant of type OleStr into type Double".
2. думал что переменная max_rows должна быть типа int, ошибка, описанная выше... ![]() 3. где можно взять справочник по этим всем функциям и свойствам? |
Автор: Albinos_x 7.11.2007, 22:32 |
код в студию |
Автор: kuzduk 10.4.2020, 13:23 | ||
|