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

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

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

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

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

{ With OLE Automation }

 uses
   ComObj;

 function RefToCell(ARow, ACol: Integer): string;
 begin
   Result := Chr(Ord('A') + ACol - 1) + IntToStr(ARow);
 end;

 function SaveAsExcelFile(AGrid: TStringGrid; ASheetName, AFileName: string): Boolean;
 const
   xlWBATWorksheet = -4167;
 var
   Row, Col: Integer;
   GridPrevFile: string;
   XLApp, Sheet, Data: OLEVariant;
   i, j: Integer;
 begin
   // Prepare Data 
  Data := VarArrayCreate([1, AGrid.RowCount, 1, AGrid.ColCount], varVariant);
   for i := 0 to AGrid.ColCount - 1 do
     for j := 0 to AGrid.RowCount - 1 do
       Data[j + 1, i + 1] := AGrid.Cells[i, j];
   // Create Excel-OLE Object 
  Result := False;
   XLApp := CreateOleObject('Excel.Application');
   try
     // Hide Excel 
    XLApp.Visible := False;
     // Add new Workbook 
    XLApp.Workbooks.Add(xlWBatWorkSheet);
     Sheet := XLApp.Workbooks[1].WorkSheets[1];
     Sheet.Name := ASheetName;
     // Fill up the sheet 
    Sheet.Range[RefToCell(1, 1), RefToCell(AGrid.RowCount,
       AGrid.ColCount)].Value := Data;
     // Save Excel Worksheet 
    try
       XLApp.Workbooks[1].SaveAs(AFileName);
       Result := True;
     except
       // Error ? 
    end;
   finally
     // Quit Excel 
    if not VarIsEmpty(XLApp) then
     begin
       XLApp.DisplayAlerts := False;
       XLApp.Quit;
       XLAPP := Unassigned;
       Sheet := Unassigned;
     end;
   end;
 end;

 // Example: 

procedure TForm1.Button1Click(Sender: TObject);
 begin
   if SaveAsExcelFile(stringGrid1, 'My Stringgrid Data', 'c:\MyExcelFile.xls') then
     ShowMessage('StringGrid saved!');
 end;


Вот перевод текста на русский язык:

Функция RefToCell Эта функция принимает два целочисленных параметра ARow и ACol, и возвращает строковое представление ячейки в формате "A1", "B2" и т.д.

Функция SaveAsExcelFile Это основная функция, которая экспортирует данные из компонента TStringGrid в файл Excel. Она принимает три параметра:

  • AGrid: Компонент TStringGrid для экспорта
  • ASheetName: Имя листа в файле Excel
  • AFileName: Путь и имя файла Excel

Функция выполняет следующие действия: 1. Создает массив variant Data с размером, равным размеру TStringGrid, используя функцию VarArrayCreate. 2. Перебирает ячейки таблицы и заполняет массив Data значениями ячеек. 3. Создает объект OLEVariant XLApp, представляющий Excel-приложение. 4. Создает новый файл в Excel-приложении с помощью Workbooks.Add(xlWBatWorkSheet). 5. Устанавливает имя листа на указанное значение. 6. Заполняет ячейки листа данными из массива Data с помощью Range.Value. 7. Сохраняет файл в указанном файле с помощью SaveAs. 8. Закрывает Excel-приложение и освобождает ресурсы.

Пример использования Код включает в себя процедуру Button1Click, которая демонстрирует, как использовать функцию SaveAsExcelFile. Она экспортирует данные из компонента TStringGrid с именем stringGrid1 в файл Excel с именем "c:\MyExcelFile.xls" с листом "My Stringgrid Data". Если экспорт выполнен успешно, она отображает сообщение об ошибке, говорящее о том, что данные были сохранены.

Замечания

  • Код использует OLE Automation, поэтому Excel должен быть установлен на системе.
  • Код предполагает, что компонент TStringGrid имеет данные. Вы можете добавить обработку ошибок, если grid пуст или не содержит данных.
  • Путь и имя файла, указанные в примере использования, жестко закодированы. Вы можете изменить это, чтобы позволить пользователю указать местоположение и имя файла.

В целом, этот код предоставляет полезный способ экспортировать данные из TStringGrid в файл Excel с помощью Delphi и OLE Automation.

Эта статья описывает способ экспортировать TStringGrid в файл Excel с помощью OLE Automation в Delphi.


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:53:24/0.0057699680328369/1