Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Экспортировать TStringGrid в Excel-файл 2

Delphi , Компоненты и Классы , TStringGrid и TDrawGrid

Экспортировать TStringGrid в Excel-файл 2

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

 { Without OLE }

 procedure XlsWriteCellLabel(XlsStream: TStream; const ACol, ARow: Word;
   const AValue: string);
 var
   L: Word;
 const
   {$J+}
   CXlsLabel: array[0..5] of Word = ($204, 0, 0, 0, 0, 0);
   {$J-}
 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;


 function SaveAsExcelFile(AGrid: TStringGrid; AFileName: string): Boolean;
 const
   {$J+} CXlsBof: array[0..5] of Word = ($809, 8, 00, $10, 0, 0); {$J-}
   CXlsEof: array[0..1] of Word = ($0A, 00);
 var
   FStream: TFileStream;
   I, J: Integer;
 begin
   Result := False;
   FStream := TFileStream.Create(PChar(AFileName), fmCreate or fmOpenWrite);
   try
     CXlsBof[4] := 0;
     FStream.WriteBuffer(CXlsBof, SizeOf(CXlsBof));
     for i := 0 to AGrid.ColCount - 1 do
       for j := 0 to AGrid.RowCount - 1 do
         XlsWriteCellLabel(FStream, I, J, AGrid.cells[i, j]);
     FStream.WriteBuffer(CXlsEof, SizeOf(CXlsEof));
     Result := True;
   finally
     FStream.Free;
   end;
 end;

 // Example: 

procedure TForm1.Button2Click(Sender: TObject);
 begin
   if SaveAsExcelFile(StringGrid1, 'c:\MyExcelFile.xls') then
     ShowMessage('StringGrid saved!');
 end;

Это код-snippet на Delphi, который экспортирует объект TStringGrid в файл Excel (.xls) без использования OLE (Object Linking and Embedding). Код использует компонент TFileStream для записи данных из grid в файл.

Обзор кода:

  1. Процедура XlsWriteCellLabel пишет метку ячейки (строковое значение) в поток Excel (XlsStream). Она принимает четыре параметра: XlsStream, ACol, ARow и AValue.
  2. Функция SaveAsExcelFile экспортирует TStringGrid в файл Excel. Она принимает два параметра: AGrid (экспортируемая grid) и AFileName (имя выходного файла).
  3. Функция создает новый поток файла (FStream) и пишет заголовок файла Excel (CXlsBof) в него.
  4. Затем функция проходит по каждой ячейке в grid, вызывая XlsWriteCellLabel для каждой ячейки. Это записывает значение ячейки (как строку) в поток файла.
  5. После записи всех ячеек функция пишет footer файла Excel (CXlsEof) в поток файла и устанавливает Result в True.
  6. Процедура Button2Click демонстрирует, как использовать функцию SaveAsExcelFile для экспорта TStringGrid в файл Excel с именем 'c:\MyExcelFile.xls'. Если экспорт успешен, она отображает сообщение об ошибке.

Примечания:

  • Код использует фиксированные массивы (CXlsLabel, CXlsBof и CXlsEof) для хранения данных Excel.
  • Процедура XlsWriteCellLabel предполагает, что значения ячеек grid - это строки. Если вам нужно экспортировать другие типы данных (например, целые числа или даты), вам придется модифицировать эту процедуру соответствующим образом.
  • Этот код не поддерживает форматирование или стилизацию в экспортируемом файле Excel.

В целом, этот код предоставляет простой способ экспорта TStringGrid в файл Excel без использования OLE. Однако он может не быть подходящим для более сложных сценариев или больших объемов данных.

Эта статья описывает способ экспортирования данных из TStringGrid в файл Excel без использования OLE-компонентов.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TStringGrid и TDrawGrid ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-11-30 11:42:55
2024-12-10 23:35:23/0.0039150714874268/1