Главная страница
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.02 c
6-46028
pfar
2002-09-12 15:03
2002.11.14
Сетевое окружения


3-45737
ShooRoop
2002-10-24 15:02
2002.11.14
Проблема с составлением запроса


14-46048
Spirit.
2002-10-24 18:32
2002.11.14
Помогите типизированые файлы в Delphi


14-46138
Anatoly Podgoretsky
2002-10-28 08:49
2002.11.14
Именинники 28 октября


1-45815
Юрий Зотов
2002-11-04 14:26
2002.11.14
TCustomModule.CreateDesignedForm (модуль DsgnIntf.pas)