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

Сохранить StringGrid в Excel файле

Delphi , Технологии , OLE Automation MSOffice

Сохранить StringGrid в Excel файле


function SaveAsExcelFile(stringGrid: TstringGrid; FileName: string): Boolean; 
const 
  xlWBATWorksheet = -4167; 
var 
  Row, Col: Integer; 
  GridPrevFile: string; 
  XLApp, Sheet: OLEVariant; 
begin 
  Result := False; 
  XLApp  := CreateOleObject('Excel.Application'); 
  try 
    XLApp.Visible := False; 
    XLApp.Workbooks.Add(xlWBatWorkSheet); 
    Sheet      := XLApp.Workbooks[1].WorkSheets[1]; 
    Sheet.Name := 'My Sheet Name'; 
    for col := 0 to stringGrid.ColCount - 1 do 
      for row := 0 to stringGrid.RowCount - 1 do 
        Sheet.Cells[row + 1, col + 1] := stringGrid.Cells[col, row]; 
    try 
      XLApp.Workbooks[1].SaveAs(FileName); 
      Result := True; 
    except 
      // Error ? 
    end; 
  finally 
    if not VarIsEmpty(XLApp) then 
    begin 
      XLApp.DisplayAlerts := False; 
      XLApp.Quit; 
      XLAPP := Unassigned; 
      Sheet := Unassigned; 
    end;
  end; 
end; 


procedure TForm1.Button1Click(Sender: TObject); 
begin 
  if SaveAsExcelFile(stringGrid1, 'c:\MyExcelFile.xls') then 
    ShowMessage('stringGrid saved!');
end; 
{*************************************************} 
// Reiner Schlay http://www.assu-assist.nl/ 

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

procedure StringGridToExcel(AGrid: TstringGrid); 
var 
  i, j: Integer; 
  Excel: Application_; 
  Book: Workbook; 
  Sheet: _WorkSheet; 
  Data: OLEVariant; 
begin 
  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]; 
  Excel := CoApplication_.Create; 
  Book  := Excel.WorkBooks.Add(EmptyParam, 0); 
  Sheet := Excel.Sheets.Add(EmptyParam, EmptyParam, 1, 
    xlWorksheet, 0) as _WorkSheet; 
  Sheet.Range[RefToCell(1, 1), RefToCell(AGrid.RowCount, 
    AGrid.ColCount)].Value := Data; 
  Excel.Visible[0] := True; 
  Excel.UserControl := True; 
end;

Программный код на языке Delphi для сохранения данных контрола TStringGrid в файле Microsoft Excel с помощью библиотеки COM Excel.

Функция SaveAsExcelFile

  • Функция принимает два параметра: stringGrid (объект TStringGrid) и FileName (путь и имя файла Excel для сохранения).
  • Создает экземпляр приложения Excel с помощью CreateOleObject.
  • Добавляет новый файл workbook и worksheet, устанавливает имя worksheet, а затем проходит по каждому ячейке в grid, записывая данные в соответствующую ячейку в файле Excel.
  • Если операция сохранения успешна, возвращает True; иначе, возвращает False.

Процедура Button1Click

  • Вызывает функцию SaveAsExcelFile с конкретным именем файла и отображает сообщение, если операция сохранения была успешной.

Функция RefToCell

  • Конвертирует индекс строки и столбца в ссылку на ячейку Excel (например, "A1" для первой ячейки в grid).

Процедура StringGridToExcel

  • Принимает объект TStringGrid в качестве входного параметра и сохраняет его данные в файле Excel.
  • Использует позднюю связь для создания экземпляра приложения Excel, workbook и worksheet.
  • Создает массив вариантов для хранения данных grid и затем проходит по каждому ячейке в grid, присваивая данные соответствующей ячейке в файле Excel.

Рекомендации:

  1. Обработка ошибок: Функция SaveAsExcelFile не обрабатывает ошибки должным образом. Вам может потребоваться добавить более robust обработку ошибок для ловли и отображения любых проблем, возникших во время операции сохранения.
  2. Формат файла Excel: Код сохраняет файлы с расширением .xls, которое является старым форматом файла Excel. Рекомендуется использовать более современный формат, например, .xlsx.
  3. Организация кода: Процедура StringGridToExcel имеет некоторые сходства с функцией SaveAsExcelFile. Вам может потребоваться рефакторинг их, чтобы они делили общий код или извлекали отдельную утилитарную функцию для работы с файлами Excel.

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

Сохранение данных StringGrid в файле Excel с помощью компонентов VCL и COM-объекта Excel.


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

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




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


:: Главная :: OLE Automation MSOffice ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-02-19 02:14:35/0.0052189826965332/1