imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 19.09.2005, 16:30     # 1
Dolbonutiy
Guest
 
Сообщения: n/a

Вопрос по Delphi

Есть таблица m-строк и n столбцов.
Как ее перенесть в Excel?
 
Старый 19.09.2005, 16:42     # 2
dyr_farot
Advanced Member
 
Регистрация: 23.08.2003
Сообщения: 442

dyr_farot Нимб уже пробиваетсяdyr_farot Нимб уже пробивается
h__p://www.sedinko.ru/delphi/doc5.php
и
h__p://delphid.dax.ru/docs/view/excel.htm
dyr_farot вне форума  
Старый 20.09.2005, 15:48     # 3
Dolbonutiy
Guest
 
Сообщения: n/a

Спсибо! А есть еще какие-нибудь способы(без CreateOleObject('Excel.Application'))?
 
Старый 20.09.2005, 15:51     # 4
dyr_farot
Advanced Member
 
Регистрация: 23.08.2003
Сообщения: 442

dyr_farot Нимб уже пробиваетсяdyr_farot Нимб уже пробивается
в смысле? можно через CreateComObject(), можно TLB-ху импортнуть...
что именно нужно/не нравится?
dyr_farot вне форума  
Старый 22.09.2005, 15:42     # 5
Dolbonutiy
Guest
 
Сообщения: n/a

Да не теперь уже все нормально. Просто работать отказывалась(забыл comobj подключить).Спасибо!
 
Старый 23.09.2005, 13:04     # 6
Arm45
Newbie
 
Регистрация: 28.02.2005
Сообщения: 30

Arm45 Косячил раньше, старается исправиться
А нуна точно xls. Или формат который читается Exel-ем?
Просто тогда все просто. Сохраняешь в csv-файл и вперед.
Arm45 вне форума  
Старый 25.09.2005, 16:02     # 7
crazydown
Guest
 
Сообщения: n/a

есть еще способ:

Создаём Excel файл без OLE
Код:
const  
  CXlsBof: array[0..5] of Word = ($809, 8, 00, $10, 0, 0);  
  CXlsEof: array[0..1] of Word = ($0A, 00);  
  CXlsLabel: array[0..5] of Word = ($204, 0, 0, 0, 0, 0);  
  CXlsNumber: array[0..4] of Word = ($203, 14, 0, 0, 0);  
  CXlsRk: array[0..4] of Word = ($27E, 10, 0, 0, 0);  

procedure XlsBeginStream(XlsStream: TStream; const BuildNumber: Word);  
begin  
  CXlsBof[4] := BuildNumber;  
  XlsStream.WriteBuffer(CXlsBof, SizeOf(CXlsBof));  
end;  

procedure XlsEndStream(XlsStream: TStream);  
begin  
  XlsStream.WriteBuffer(CXlsEof, SizeOf(CXlsEof));  
end;  

procedure XlsWriteCellRk(XlsStream: TStream; const ACol, ARow: Word;  
  const AValue: Integer);  
var  
  V: Integer;  
begin  
  CXlsRk[2] := ARow;  
  CXlsRk[3] := ACol;  
  XlsStream.WriteBuffer(CXlsRk, SizeOf(CXlsRk));  
  V := (AValue shl 2) or 2;  
  XlsStream.WriteBuffer(V, 4);  
end;  

procedure XlsWriteCellNumber(XlsStream: TStream; const ACol, ARow: Word;  
  const AValue: Double);  
begin  
  CXlsNumber[2] := ARow;  
  CXlsNumber[3] := ACol;  
  XlsStream.WriteBuffer(CXlsNumber, SizeOf(CXlsNumber));  
  XlsStream.WriteBuffer(AValue, 8);  
end;  

procedure XlsWriteCellLabel(XlsStream: TStream; const ACol, ARow: Word;  
  const AValue: string);  
var  
  L: Word;  
begin  
  L := Length(AValue);  
  CXlsLabel[1] := 8 + L;  
  CXlsLabel[2] := ARow;  
  CXlsLabel[3] := ACol;  
  CXlsLabel[5] := L;  
  XlsStream.WriteBuffer(CXlsLabel, SizeOf(CXlsLabel));  
  XlsStream.WriteBuffer(Pointer(AValue)^, L);  
end;  

procedure TForm1.Button1Click(Sender: TObject);  
var  
  FStream: TFileStream;  
  I, J: Integer;  
begin  
  FStream := TFileStream.Create('c:\e.xls', fmCreate);  
  try  
    XlsBeginStream(FStream, 0);  
    for I := 0 to 99 do  
      for J := 0 to 99 do  
      begin  
        XlsWriteCellNumber(FStream, I, J, 34.34);  
        // XlsWriteCellRk(FStream, I, J, 3434);  
        // XlsWriteCellLabel(FStream, I, J, Format('Cell: %d,%d', [I, J]));  
      end;  
    XlsEndStream(FStream);  
  finally  
    FStream.Free;  
  end;  
end;
Взято из Delphi Russian Knowledge Base, http://forum.vingrad.ru/
 


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

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 23:54.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.