Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.11.14;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
3-45752
Veronika
2002-10-25 07:32
2002.11.14
Можно ли к серверу IB, установленному на win98 обращаться по сети


3-45723
Карелин Артем
2002-10-24 13:33
2002.11.14
Маленькая таблица с данными. Где взять на халяву?


1-45822
Andrew2
2002-11-05 09:20
2002.11.14
Создание мемо на форме


1-45992
Smirnoff
2002-11-04 16:47
2002.11.14
Как попроще выделить из переменной-даты год?


3-45751
kalan
2002-10-25 04:31
2002.11.14
Что необходимо установить на клиенте для работы с dbExpress





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский