Форум: "Основная";
Текущий архив: 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