Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.14;
Скачать: CL | DM;

Вниз

Delphi & Excel   Найти похожие ветки 

 
Mad_Ghost ©   (2002-11-04 15:08) [0]

Здравсвтвуйте уважаемые мастера.
Подскажите пожалуйста, как мне поработать с файлом Excel?
нужно, определить сколько листов всего в книге, сколько максимально заполнено в листе, (если такое конечно есть).

Вот, нужно парсить файл, не с четкой структурой, т.е. я изначально не знаю сколько там листов, сколько информации в листе, просто нужно открыть, достать, и проанализировать, подскажите пожалуйста, как узнать скока листов?
и как обращаться потом к этому листу отдельно по ячейкам?

заанее большое спасибо


 
Lord Warlock ©   (2002-11-04 15:15) [1]

Посмотри на королевстве Дельфи статьи "По волнам интергации..."


 
Карелин Артем ©   (2002-11-04 15:28) [2]

Ето делается через коллекции интерфейсов:
...
var Excel:variant;
...
Excel:=CreateOleObject("Excel.Application");
Excel.Visible:=true;
...

WorkBooks[номер книги].WorkSheets.Сount-число листов.
WorkSheets[номер листа] - возвращает текущий лист.
WorkSheets[номер листа].Range.Cells[x,y].value - содержимое ячейки.

Если не понял - пиши, отвечу.


 
Mad_Ghost ©   (2002-11-04 15:45) [3]

спасибо все, то, но как WorkBooks[номер книги].WorkSheets.Count;
получается?
т.е. его же определить надо.

и ещё, как можно открыть при этом файл, т.е. нужно файл открыть, и его уже парсить, за ответ благодарен. заранее ;)


 
Карелин Артем ©   (2002-11-04 15:56) [4]

Excel.WorkBooks[номер книги].WorkSheets.Count

Про загрузку с ходу не могу выдать - все доки (сам делал) дома.

Открой файл excel.exe(2000& XP) или excel*.olb(более старые версии) как библиотеку типов из !дельфи! и там ищи в интерфейсе WorkBook.


 
¤NoNaMe¤ ©   (2002-11-04 16:22) [5]

Вот пример:

var
cls_ExcelObject:string;
regData:TRegistry;
Excel,WorkSheet:OleVariant;
i,j:integer;
begin
cls_ExcelObject := "Excel.Application";
//Определение установленной версии Exel
regData := TRegistry.Create;
regData.RootKey := HKEY_CLASSES_ROOT;
try
if regData.OpenKey("\Excel.Application\CurVer", False) then
begin
cls_ExcelObject := regData.ReadString("");
regData.CloseKey;
end
finally
regData.Free;
end;
//========================
try
Excel:=CreateOleObject(cls_ExcelObject);
Excel.Visible:=false;//Делаем невидимым
Excel.WorkBooks.Open(FileName);
WorkSheet:=Excel.WorkBooks[1].WorkSheets[1];
//Читаем содержимое в StringGrid
StringGrid1.ColCount:=WorkSheet.Cells.CurrentRegion.Columns.Count;
StringGrid1.RowCount:=WorkSheet.Cells.CurrentRegion.Rows.Count;
for i:=1 to WorkSheet.Cells.CurrentRegion.Columns.Count do
for j:=1 to WorkSheet.Cells.CurrentRegion.Rows.Count do
begin
StringGrid1.Cells[i-1,j-1]:=VarToStr(WorkSheet.Cells[j,i]);
end;
//===============================
Excel.Workbooks.Close;


 
Mad_Ghost ©   (2002-11-05 08:17) [6]

ух ты спасибо большое, ты общественности такое большое дело сделал, вовек не забуду, рулез. а не знаещь, где можно про все эти функции почитать, чтобы дополнить и без того полную картинку?



Страницы: 1 вся ветка

Текущий архив: 2002.11.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
1-45882
bearoman
2002-11-05 10:53
2002.11.14
Как изменить кнопки


7-46168
Ш-К
2002-09-13 14:51
2002.11.14
Кто-нибудь работал с ПУ по протоколу ЕРР?


3-45689
Шурик Ш
2002-10-28 13:17
2002.11.14
Проблема с кодировкой


1-45843
Gari
2002-11-05 10:40
2002.11.14
Структура Delphi


1-45798
MsGuns
2002-11-04 19:17
2002.11.14
События OnCreate, OnShow, OnActivate для формы