Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > Массив листов в Excel


Автор: DimassS 11.5.2006, 05:51
Обрисую суть задачи в общем:

У меня есть несколько файлов, я создаю из их названий массив типа String, скажем для начала у меня всего два названия - NODE и TRANSF, ну и вот в чём собственно проблема как бы мне создать два листа в Excel и присвоить им названия из массива, сразу говорю этих названий будет намного больше. Вот примерно на чём я сейчас остановился:

Код

Var
SheetMas: array of string;
Excel: Variant;
ShetI:integer;
.....................................

SetLength(SheetMas,2); // Ещё бы вот в этом месте зайти в папку и узнать количество файлов с расширением "TTL"
//Здесь по идее должен быть цикл???
SheetMas[0]:='C:\редакт\NODE.TTL'
SheetMas[1]:='C:\редакт\TRANSF.TTL'//Как-нибудь бы названия файлов вырезать потому что они могут быть разными и заполнять из папки
......................................

Excel := CreateOleObject('Excel.Application');
Excel.WorkBooks.Add;
//Создали Excel и рабочую книгу
For ShetI:=0 to 1 do
begin
//Вот здесь надо создать лист, назначить ему имя из SheetMas
//Дальше идёт заполнение этого листа(сделано)

end;
После заполнения всех листов сохраняем Excel методом SaveAs(сделано)


Заранее благодарю!!!! 

Вот сейчас массив листов я создал, а как загрузить Excel чтобы создаваемый мною лист был первым, а не четвёртым и пятым... 

Автор: Smailik 11.5.2006, 10:04
Код

  try
    Excel := CreateOleObject('Excel.Application');
    Excel.Visible := False; //скрыть для увелиения скорости
    Excel.SheetsInNewWorkbook := 1; //количество листов в новой книге

    Excel.WorkBooks.Add; //Создать новую таблицу

//дальше работаешь с ним как обычно - в цикле добаляя листы. 
//те что добавляются последними - видны в экзеле слева. 
//т.е. сначала добавляешь последние а потом первые листы.
//сначала обрабатываешь SheetMas[10] потом SheetMas[9] ... SheetMas[0]

  finally
    Excel.Visible := True; // иначе если сбойнет - экзель будет висеть в памяти невидимым
  end;


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)