Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2012, 15:29   #1
SPD
Пользователь
 
Регистрация: 30.11.2009
Сообщений: 41
Радость Delphi и Excel

Вот делаю такую штуку считую с екселя в делфи файл, все идет норм но не могу понять как извлеч имя листа с екселя...может ктото подскажет как ето сделать...У меня стринггриды росположены на TabSheet и етим TabSheet нужно присвоить имя листа с екселя но чтот до меня не доходит как ето сделать...помогите пож...


Функция с помощу которой считую с екселя в делфи:
Код:
function Xls_To_StringGrid(AGrid: TStringGrid; AXLSFile: string; SheetNum:integer): Boolean;
 const
   xlCellTypeLastCell = $0000000B;
 var
   XLApp, Sheet : OLEVariant;
   RangeMatrix: Variant;
   x, y, k, r: Integer;
 begin
   Result := False;
   XLApp := CreateOleObject('Excel.Application');
   try
     XLApp.Visible := False;
     XLApp.Workbooks.Open(AXLSFile);
     Sheet := XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[SheetNum];
     Sheet.activate;
     Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
     x := XLApp.ActiveCell.Row;
     y := XLApp.ActiveCell.Column;
     AGrid.RowCount := x;
     AGrid.ColCount := y;
     RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value;
     k := 1;
     repeat
       for r := 1 to y do
         AGrid.Cells[(r - 1), (k - 1)] := RangeMatrix[K, R];
       Inc(k, 1);
     until k > x;
     RangeMatrix := Unassigned;
   finally
     if not VarIsEmpty(XLApp) then
     begin
       XLApp.Quit;
       XLAPP := Unassigned;
       Sheet := Unassigned;
       Result := True;
     end;
   end;
 end;

xls_to_stringgrid(form9.stringgrid1, s1+'QHHQ.xls', 1);
xls_to_stringgrid(form9.stringgrid2, s1+'QHHQ.xls', 2);
xls_to_stringgrid(form9.stringgrid3, s1+'QHHQ.xls', 3);
xls_to_stringgrid(form9.stringgrid4, s1+'QHHQ.xls', 4);
Заранее благодарен...
SPD вне форума Ответить с цитированием
Старый 18.01.2012, 15:47   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а если так попробовать?
Код:
procedure TForm1.Button1Click(Sender: TObject);
const
   xlCellTypeLastCell = $0000000B;
 var
   XLApp, Sheet : OLEVariant;
    i : Integer;
 begin
   XLApp := CreateOleObject('Excel.Application');
   try
     XLApp.Visible := False;
     XLApp.Workbooks.Open('C:\t1.xls');
     for i:=1 to XLApp.WorkSheets.Count do
        ShowMessage(IntToStr(i)+'-й лист - имя листа: '+XLApp.WorkSheets[i].Name);
   finally
     if not VarIsEmpty(XLApp) then
     begin
       XLApp.Quit;
       XLAPP := Unassigned;
     end;
   end;
 end;
имя активного листа доступно так:
Код:
     ShowMessage('Имя текущего листа: '+XLApp.ActiveSheet.Name);

Последний раз редактировалось Serge_Bliznykov; 18.01.2012 в 15:50.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.01.2012, 16:51   #3
SPD
Пользователь
 
Регистрация: 30.11.2009
Сообщений: 41
По умолчанию

биг спс помогло...
SPD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi Excel (сохранение записи в Excel) Кас Алина Общие вопросы Delphi 4 28.05.2010 09:17
Excel + Delphi 7 lastalert Общие вопросы Delphi 6 19.03.2010 10:26
как при импорте из Excel в delphi узнать сколько заполненных строк в книге Excel?чтобы организовать цикл betirsolt БД в Delphi 1 17.01.2010 18:51
ИЗ Delphi в Excel kylebyakaa Общие вопросы Delphi 7 16.04.2009 10:44
Delphi ->Excel->График по таблице->Delphi Avalonix БД в Delphi 2 30.10.2008 14:04