powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DELPHI: Импорт .db-таблицы в .xls-файл
5 сообщений из 5, страница 1 из 1
DELPHI: Импорт .db-таблицы в .xls-файл
    #32323753
Becks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый.
Необходимо осуществлять программный импорт .db-таблицы в .xls-файл, при этом хотелось бы из приложения открывать этот файл в Excel'е, чтобы его можно было тутже преобразовать пересохранить и т.д. Подскажите как сделать, плз.
...
Рейтинг: 0 / 0
DELPHI: Импорт .db-таблицы в .xls-файл
    #32324083
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Компоненты посмотреть. Или в табделимитед самому.
EhLib-овский грид сам умеет это делать - в excel сохранять

-- Tygra's --
...
Рейтинг: 0 / 0
DELPHI: Импорт .db-таблицы в .xls-файл
    #32324089
Rostyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
DELPHI: Импорт .db-таблицы в .xls-файл
    #32324095
Фотография viman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
где то на этом форуме пример давно был
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
procedure ExportDBGrid(toExcel: Boolean);
var
  bm: TBookmark;
  col, row: Integer;
  sline: String;
  mem: TMemo;
  ExcelApp: Variant;
begin
  Screen.Cursor := crHourglass;
  fodogovor.DBGrideh1.DataSource.DataSet.DisableControls;
  bm := fodogovor.DBGrideh1.DataSource.DataSet.GetBookmark;
  fodogovor.DBGrideh1.DataSource.DataSet.First;
  // создаём объект Excel
 if toExcel then
 begin
  ExcelApp := CreateOleObject('Excel.Application');
  ExcelApp.WorkBooks.Add(xlWBatWorkSheet);
  ExcelApp.WorkBooks[ 1 ].WorkSheets[ 1 ].Name := 'Grid Data';
 end;
  // Сперва отправляем данные в memo
// работает быстрее, чем отправлять их напрямую в Excel
  mem := TMemo.Create(mem);
  mem.Visible := false;
  mem.Parent := fodogovor;
  mem.Clear;
  sline := '';
// добавляем информацию для имён колонок
 for col :=  0  to fodogovor.DBGrideh1.FieldCount- 1  do
  sline := sline + fodogovor.DBGrideh1.Fields[col].DisplayLabel + # 9 ;
  mem.Lines.Add(sline);
// получаем данные из memo
 for row :=  0  to fodogovor.DBGrideh1.DataSource.DataSet.RecordCount- 1  do
 begin
  sline := '';
  for col :=  0  to fodogovor.DBGrideh1.FieldCount- 1  do
  sline := sline + fodogovor.DBGrideh1.Fields[col].AsString + # 9 ;
  mem.Lines.Add(sline);
  fodogovor.DBGrideh1.DataSource.DataSet.Next;
 end;
// копируем данные в clipboard
 mem.SelectAll;
 mem.CopyToClipboard;
// если необходимо, то отправляем их в Excel
// если нет, то они уже в буфере обмена
 if toExcel then
 begin
  ExcelApp.Workbooks[ 1 ].WorkSheets['Grid Data'].Paste;
  ExcelApp.Visible := true;
 end;
//FreeAndNil(ExcelApp);
 fodogovor.DBGrideh1.DataSource.DataSet.GotoBookmark(bm);
 fodogovor.DBGrideh1.DataSource.DataSet.FreeBookmark(bm);
 fodogovor.DBGrideh1.DataSource.DataSet.EnableControls;
 Screen.Cursor := crDefault;
end;




Viman
...
Рейтинг: 0 / 0
DELPHI: Импорт .db-таблицы в .xls-файл
    #32324103
RDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
procedure TForm4.SpeedButton1Click(Sender: TObject);//Передаём данные в Excel
var
ExcelApp, Workbook, Range, Cell1, Cell2, ArrayData : Variant;
BeginCol, BeginRow, i, j : integer;

begin
if Application.MessageBox('Для выполнения данной операции'#10#13'необходимо наличие Microsoft Excel'#10#13'Продолжить?', 'Предупреждение',MB_OKCANCEL or MB_ICONWARNING)= IDOK then
begin
RecPos:=Form1.Table36.RecNo;//Запоминаем указатель
ProgressBar1.Max := Form1.Table36.RecordCount;
Form1.DataSource1.DataSet.DisableControls;

// Координаты левого верхнего угла области, в которую будем выводить данные
BeginCol := 1;
BeginRow := 1;

// Создание Excel
ExcelApp := CreateOleObject('Excel.Application');

// Отключаем реакцию Excel на события, чтобы ускорить вывод информации
ExcelApp.Application.EnableEvents := false;

// Создаем Книгу (Workbook)
// Если заполняем шаблон, то Workbook := ExcelApp.WorkBooks.Add('C:\MyTemplate.xls');
Workbook := ExcelApp.WorkBooks.Add;

// Создаем Вариантный Массив, который заполним выходными данными
ArrayData := VarArrayCreate([1, Form1.Table36.RecordCount, 1, Form1.Table36.FieldCount], varVariant);

Form1.Table36.First;
// Заполняем массив
for I := 1 to Form1.Table36.RecordCount do
begin
for J := 1 to Form1.Table36.FieldCount do
ArrayData[I, J] := Form1.Table36.Fields[j-1].AsString;
ProgressBar1.Position := Form1.Table36.RecNo;
Form1.Table36.Next;
end;


StaticText1.visible := True;
Form4.Refresh;
ProgressBar1.Position := 0;
// Левая верхняя ячейка области, в которую будем выводить данные
Cell1 := WorkBook.WorkSheets[1].Cells[BeginRow, BeginCol];
// Правая нижняя ячейка области, в которую будем выводить данные
Cell2 := WorkBook.WorkSheets[1].Cells[BeginRow + Form1.Table36.RecordCount - 1, BeginCol +
Form1.Table36.FieldCount - 1];

// Область, в которую будем выводить данные
Range := WorkBook.WorkSheets[1].Range[Cell1, Cell2];

// А вот и сам вывод данных
// Намного быстрее поячеечного присвоения
Range.Value := ArrayData;

// Делаем Excel видимым
ExcelApp.Visible := true;

//FreeAndNil(ExcelApp);
//FreeAndNil(ExcelApplication);
Form1.Table36.MoveBy(RecPos - Form1.Table36.RecNo);//Восстанавливаем указатель
Form1.DataSource1.DataSet.EnableControls;
StaticText1.visible := False;


end;
end;

выкинь лишнее
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DELPHI: Импорт .db-таблицы в .xls-файл
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]