Модераторы: MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать, закончились ли строки в excel файле? 
:(
    Опции темы
sgentstuff
Дата 10.7.2006, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 13.9.2005

Репутация: нет
Всего: 1



как организовать цикл до конца строк? 
--------------------
Тот, кто ищет миллионы, весьма редко их находит, но тот, кто их не ищет, не находит никогда.  
PM ICQ   Вверх
Albinos_x
Дата 10.7.2006, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108





--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
sgentstuff
Дата 10.7.2006, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 13.9.2005

Репутация: нет
Всего: 1



там про word есть но про excel я не нашел 
--------------------
Тот, кто ищет миллионы, весьма редко их находит, но тот, кто их не ищет, не находит никогда.  
PM ICQ   Вверх
Albinos_x
Дата 10.7.2006, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



плохо смотрел... smile

Добавлено @ 12:41 
там аж 2 варианта:
Цитата(Albinos_x @  21.2.2006,  16:22 Найти цитируемый пост)
 Точно также как и с WordApplication, решил я разобраться с компанентой ExcelApplication... Ну что ж приступим:

Немного теории
...


Цитата(Albinos_x @  21.2.2006,  16:46 Найти цитируемый пост)
...Количество строк и столбцов

Тут тоже существует несколько вариантов:

1.
код Pascal/Delphi    
...    
ExcelWorksheet1.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;    
// количество строк и столбцов    
Caption:='Строк: '+inttostr(ExcelApplication1.ActiveCell.Row)+' Столбцов: '+ inttostr(ExcelApplication1.ActiveCell.Column);    
...    

2. 
код Pascal/Delphi    
...    
// Количество столбцов    
caption:=inttostr(ExcelWorksheet1.UsedRange[0].Columns.Count );    
...    

Со строками по аналогии
...


Добавлено @ 12:42 
и пример ещё к тому же есть... 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Akella
Дата 11.7.2006, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 2
Всего: 329



Код

Var
 WorkSheet : _WorkSheet; //  определяем WorkSheet
 iLastRow:integer;
...

        WorkSheet.Cells.SpecialCells(xlCellTypeLastCell,EmptyParam).Activate;
        // Получаем значение последней строки
        iLastRow:=(ex1.ActiveCell.Row)-1;



поищи по форуму, я выкладывал примеры работы с Excel`ем 
PM MAIL   Вверх
sgentstuff
Дата 11.7.2006, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 13.9.2005

Репутация: нет
Всего: 1



мне нужно для нужной книги для нужного листа узнать кол-во строк
например вот так:

Код

max_rows:=Excel.WorkBooks[p+1].WorkSheets[1].UsedRange[1].Columns.Count;


но так не работает!
 
--------------------
Тот, кто ищет миллионы, весьма редко их находит, но тот, кто их не ищет, не находит никогда.  
PM ICQ   Вверх
Albinos_x
Дата 11.7.2006, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



В чём это выражается? 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
sgentstuff
Дата 11.7.2006, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 13.9.2005

Репутация: нет
Всего: 1




Я не испоьзую компоненту, а просто через ОЛЕ, как правильно записать получение количества строк?

Код

var
Excel:Variant;
max_rows:integer;
begin
max_rows:=Excel.WorkBooks[p+1].WorkSheets[1].UsedRange[1].Columns.Count;
end;

на эту запись он выдает такую ошибку:
EOleSysError with message 'Ivalid number of parameters' 
--------------------
Тот, кто ищет миллионы, весьма редко их находит, но тот, кто их не ищет, не находит никогда.  
PM ICQ   Вверх
Albinos_x
Дата 12.7.2006, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



попробуй вот так:
Код

var    
Excel:Variant;    
max_rows:integer;    
begin    
max_rows:=Excel.WorkBooks[p+1].WorkSheets[1].UsedRange[0].Columns.Count;    
end;


Что за 
[p+1]



--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
sgentstuff
Дата 12.7.2006, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 13.9.2005

Репутация: нет
Всего: 1



с 
Код

UsedRange[0]

тоже самое
p+1  - это просто номер книги, в других местах с  p+1 все нормально, можешь у себя проверить как этот код работает, но только без компоненты ExcelAplication

 
--------------------
Тот, кто ищет миллионы, весьма редко их находит, но тот, кто их не ищет, не находит никогда.  
PM ICQ   Вверх
Albinos_x
Дата 12.7.2006, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



попробуй так:
Код
...
WorkSheet:=Excel.WorkBooks[p+1].WorkSheets[1];
max_rows:=WorkSheet.Cells.CurrentRegion.Rows.Count;
...


если не прокатит,то делай стандартным способом:
Код
...
    WorkSheet:=Excel.WorkBooks[p+1].WorkSheets[1];
    WorkSheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;    
    max_rows := XLApp.ActiveCell.Row;
...


WorkSheet : OleVariant;

у последнего только один недостаток: если на странице стоит защита, то будет вылетать ошибка...

 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
sgentstuff
Дата 13.7.2006, 05:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 13.9.2005

Репутация: нет
Всего: 1



ура, это сработало, но к сожалению работает только если строки идут подподряд и между ними нету пропуска
Код

WorkSheet:=Excel.WorkBooks[p+1].WorkSheets[1];    
max_rows:=WorkSheet.Cells.CurrentRegion.Rows.Count;


а если вот так
ф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(вкл и пустую), как подсчитать количество, если есть пропуски? 
--------------------
Тот, кто ищет миллионы, весьма редко их находит, но тот, кто их не ищет, не находит никогда.  
PM ICQ   Вверх
sgentstuff
Дата 13.7.2006, 06:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 13.9.2005

Репутация: нет
Всего: 1



у меня много Excel файлов, в каждом не менее 30000 строк, перед обработкой каждогго файла мне нужно узнать количество строк чтобы знать до куда запускать цикл, но попадаются и пустые строки, даже не знаю что делать, может это как-то по другому можно сделать? нужна помощь! 
--------------------
Тот, кто ищет миллионы, весьма редко их находит, но тот, кто их не ищет, не находит никогда.  
PM ICQ   Вверх
Albinos_x
Дата 13.7.2006, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



сделай вторым способом... 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
sgentstuff
Дата 13.7.2006, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 13.9.2005

Репутация: нет
Всего: 1



вторым способом попробывал пишет

метод Activate из класса Range завершен не верно
в чем загвоздка? 
--------------------
Тот, кто ищет миллионы, весьма редко их находит, но тот, кто их не ищет, не находит никогда.  
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.1590 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.