Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.11.2010, 20:11
doctordradd doctordradd вне форума
Прохожий
 
Регистрация: 20.10.2010
Сообщения: 18
Репутация: 10
По умолчанию Импорт данных из Excel

Подскажите, пожалуйста, как правильно импортировать данные из таблицы Excel, экспорт работает отлично, необходимо обратный процесс создать...
Вот код экспорта:
Код:
procedure TBasePPL.ToExcelExecute(Sender: TObject);
var ws,xl:variant;
    i,maxrow:integer;
    col,fst:integer;
begin
  fst:=2;
  xl:=createoleobject('Excel.Application');
    try
      maxrow:=0;
      xl.visible:=true;
      XL.WorkBooks.Add;
      ws := XL.ActiveWorkBook.ActiveSheet;
      ws.Range['A1'].NumberFormat:='0';

      ws.Range['A'+inttostr(fst)].Value := '№';
      ws.Range['B'+inttostr(fst)].Value := 'Nombres';
      col:=1;
begin
         inc(col);
         ws.Range[Chr(Ord('A')+col)+inttostr(fst)].Value := ' ';
      end;
 begin
         inc(col);
         ws.Range[Chr(Ord('A')+col)+inttostr(fst)].Value := ' ';
      end;
 begin
         inc(col);
         ws.Range[Chr(Ord('A')+col)+inttostr(fst)].Value := ' ';
      end;
begin
         inc(col);
         ws.Range[Chr(Ord('A')+col)+inttostr(fst)].Value := ' ';
      end;
 begin
         inc(col);
         ws.Range[Chr(Ord('A')+col)+inttostr(fst)].Value := ' ';
      end;

      for i:=fst+1 to Visitas.Items.Count+fst do begin
         col:=1;
         ws.Range['a'+inttostr(i)].Value := i-2;//# работы
         ws.Range['b'+inttostr(i)].Value := Visitas.Items[i-fst-1].Caption;
 begin
            inc(col);
            ws.Range[Chr(Ord('A')+col)+inttostr(i)].Value:=Visitas.Items[i-fst-1].SubItems[0];
         end;
 begin
            inc(col);
            ws.Range[Chr(Ord('A')+col)+inttostr(i)].Value:=Visitas.Items[i-fst-1].SubItems[1];
         end;
 begin
            inc(col);
            ws.Range[Chr(Ord('A')+col)+inttostr(i)].Value:=Visitas.Items[i-fst-1].SubItems[2];
         end;
 begin
            inc(col);
            ws.Range[Chr(Ord('A')+col)+inttostr(i)].Value:=Visitas.Items[i-fst-1].SubItems[3];
         end;
         begin
            inc(col);
            ws.Range[Chr(Ord('A')+col)+inttostr(i)].Value:=Visitas.Items[i-fst-1].SubItems[4];
         end;
         maxrow:=i;
      end;

//установим сетку для таблицы
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeLeft].LineStyle:=xlContinuous;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeLeft].Weight:=xlThin;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeLeft].ColorIndex:=xlAutomatic;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeTop].LineStyle:=xlContinuous;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeTop].Weight:=xlThin;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeTop].ColorIndex:=xlAutomatic;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeBottom].LineStyle:=xlContinuous;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeBottom].Weight:=xlThin;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeBottom].ColorIndex:=xlAutomatic;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeRight].LineStyle:=xlContinuous;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeRight].Weight:=xlThin;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeRight].ColorIndex:=xlAutomatic;
//внутреннее пересечение
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlInsideVertical].LineStyle:=xlContinuous;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlInsideVertical].Weight:=xlThin;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlInsideVertical].ColorIndex:=xlAutomatic;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlInsideHorizontal].LineStyle:=xlContinuous;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlInsideHorizontal].Weight:=xlThin;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlInsideHorizontal].ColorIndex:=xlAutomatic;
//наружние границы
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeLeft].LineStyle:=xlContinuous;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeLeft].Weight:=xlMedium;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeLeft].ColorIndex:=xlAutomatic;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeTop].LineStyle:=xlContinuous;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeTop].Weight:=xlMedium;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeTop].ColorIndex:=xlAutomatic;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeBottom].LineStyle:=xlContinuous;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeBottom].Weight:=xlMedium;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeBottom].ColorIndex:=xlAutomatic;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeRight].LineStyle:=xlContinuous;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeRight].Weight:=xlMedium;
      ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeRight].ColorIndex:=xlAutomatic;
      for i:=ord('A')to ORD('A')+col do begin
         ws.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeLeft].LineStyle:=xlContinuous;
         ws.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeLeft].Weight:=xlMedium;
         ws.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeLeft].ColorIndex:=xlAutomatic;
         ws.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeTop].LineStyle:=xlContinuous;
         ws.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeTop].Weight:=xlMedium;
         ws.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeTop].ColorIndex:=xlAutomatic;
         ws.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeBottom].LineStyle:=xlContinuous;
         ws.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeBottom].Weight:=xlMedium;
         ws.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeBottom].ColorIndex:=xlAutomatic;
         ws.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeRight].LineStyle:=xlContinuous;
         ws.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeRight].Weight:=xlMedium;
         ws.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeRight].ColorIndex:=xlAutomatic;
      end;
      ws.range['A1:'+chr(Ord('A')+col)+'1'].merge;
      if (Groups.ItemIndex>=0)and(Groups.ItemIndex<groups.Items.Count)then
         ws.range['A1:'+chr(Ord('A')+col)+'1'].value:='Lista "'+Groups.Items[Groups.ItemIndex].Caption+'"'
      else
         ws.range['A1:'+chr(Ord('A')+col)+'1'].value:='Lista';
      ws.range['A1:'+chr(Ord('A')+col)+'1'].font.Bold:=true;
      ws.range['A'+inttostr(fst)+':'+chr(Ord('A')+col)+inttostr(fst)].font.bold:=true;
//подгоним размеры
      ws.Columns['A:'+chr(Ord('A')+col)].EntireColumn.AutoFit;
      xl.ActiveWindow.SplitRow:=fst;
      xl.ActiveWindow.FreezePanes:=True;
      xl.ActiveSheet.PageSetup.Orientation:=xlLandscape;
      xl.ActiveSheet.PageSetup.PrintArea:='$A:$G';
    finally
    //выход из экселя
    //  xl.quit;
    end;
Спасибо...

Последний раз редактировалось doctordradd, 01.11.2010 в 20:13.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:27.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025