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

Сохранение данных из TListView в XLS

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



Автор: dDan
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Сохранение данных из ListView в *.xls

Сохранение данных из ListView в *.xls

Зависимости: ComObj
Автор:       dDan, ddan2002@mail.ru
Copyright:   dDan
Дата:        3 декабря 2003 г.
***************************************************** }

procedure ListToExcel(ListView: TListView);
var
  row, i: integer;
  Range, Sheet: VAriant;
begin
  try
    Excel := CreateOleObject('Excel.Application');
  except
    raise Exception.Create('Невозможно поключиться к серверу Excel');
  end;
  Screen.Cursor := crHourGlass;
  Excel.SheetsInNewWorkBook := 1;
  Excel.WorkBooks.Add;
  Sheet := Excel.Workbooks[1].Sheets[1];
  Range := Sheet.Columns;
  Range.Columns[1].ColumnWidth := 30;
  Range.Columns[n].ColumnWidth := 30;
  Range.Columns[n + 1].ColumnWidth := 30;
  Range.Columns.Font.Size := 8;
  Range := Sheet.Range['a1:f1'];
  Range.Font.Size := 15;
  Range.Font.Bold := True;
  Range.Columns.Interior.ColorIndex := 6;
  Range.HorizontalAlignment := 3;
  Sheet.Cells[1, 2] := 'Данные на' + DateToStr(Date); //Заголовок
  Range := Sheet.Range['a2:f2'];
  Range.Font.Size := 10;
  Range.Font.Bold := True;
  Sheet.Cells[2, 1] := 'АА'; //Названия столбцов
  Sheet.Cells[2, n] := 'ББ';
  Sheet.Cells[2, n + 1] := 'вв';
  Row := 3;
  for i := 0 to List.Items.Count - 1 do
  begin
    Sheet.Cells[Row, 1] := ListView.Items.Item[i].Caption;
    Sheet.Cells[Row, 2] := ListView.Items.Item[i].SubItems[n];
    Sheet.Cells[Row, 3] := ListView.Items.Item[i].SubItems[n + 1];
    inc(Row);
  end;
  Screen.Cursor := crDefault;
  if SaveDialog.Execute then
    Excel.WorkBooks[1].SaveAs(exs.FileName); //Сохраняем
  Excel.Visible := True; //Показываем Excel
end;

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

Это код Delphi, который сохраняет данные из контрола TListView в файл Excel (.xls). Код использует unit ComObj для создания экземпляра Excel и манипуляции его объектами.

Вот разбивка того, что код делает:

  1. Создается экземпляр Excel с помощью CreateOleObject('Excel.Application').
  2. Устанавливается приложение Excel, создается новый файл и добавляется лист.
  3. Устанавливается форматирование листа, включая размер шрифта, жирность и цвета ячеек.
  4. Добавляется строка заголовка с именами столбцов и дате штампа.
  5. Проводится цикл по каждому элементу в контроле TListView, извлекается его надпись и подэлементы, и записываются в лист Excel, начиная с строки 3.
  6. Наконец, файл сохраняется в файл Excel с помощью метода SaveAs.

Вот некоторые предложения по улучшению:

  1. Обработка ошибок: код только ловит исключения, вызванные CreateOleObject, но что если другие ошибки происходят во время выполнения? Рекомендуется ловить и обрабатывать другие типы исключений.
  2. Организация кода: код очень длинный и выполняет много различных задач. Рекомендуется разбивать его на отдельные процедуры или функции, чтобы сделать более управляемым.
  3. Имя переменных: некоторые имена переменных, такие как n и Row, не очень описательны. Рекомендуется переименовать их в что-то более значимое.
  4. Комментарии: в коде нет комментариев, чтобы объяснить, что он делает или как работает. Добавление некоторых комментариев может помочь другим людям лучше понять код.

В качестве альтернативного решения можно использовать библиотеку ExcelExport, которая предоставляет более простой способ экспорта данных из приложений Delphi в файлы Excel. Это бы устранило необходимость создания экземпляра Excel и манипуляции его объектами вручную.

Вот пример модификации кода с использованием ExcelExport:

uses
  ExcelExport;

procedure ListToExcel(ListView: TListView);
begin
   // Создается новый файл Excel
  var excelFile := TExcelFile.Create('output.xlsx');

   // Устанавливается лист
  var worksheet := excelFile.Worksheets.Add;
  worksheet.Name := 'Sheet1';

   // Записывается строка заголовка
  worksheet.Cells[1, 1] := 'Caption';
  worksheet.Cells[1, 2] := 'SubItem1';
  worksheet.Cells[1, 3] := 'SubItem2';

   // Проводится цикл по каждому элементу в списке
  var i: integer;
  for i := 0 to ListView.Items.Count - 1 do
  begin
     // Записывается данные элемента в лист
    worksheet.Cells[i + 2, 1] := ListView.Items.Item[i].Caption;
    worksheet.Cells[i + 2, 2] := ListView.Items.Item[i].SubItems[0];
    worksheet.Cells[i + 2, 3] := ListView.Items.Item[i].SubItems[1];
  end;

   // Сохраняется файл
  excelFile.Save;
end;

Код создает новый файл Excel, устанавливает лист, записывает строку заголовка и данные элементов в лист, а затем сохраняет файл. Он намного проще и более компактен, чем оригинальный код!

В статье описывается код на Delphi, который позволяет сохранять данные из TListView в файл XLS с помощью библиотеки ComObj.


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

Получайте свежие новости и обновления по 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-17 21:11:33/0.0038721561431885/0