Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.01.2024, 14:01
pozavchera pozavchera вне форума
Прохожий
 
Регистрация: 30.01.2024
Сообщения: 2
Версия Delphi: delphi 11
Репутация: 10
Лампочка Вставка в Excel поячеечно

Добрый день,
имею mdb из него с помощью ADO и sql запроса отображаю в dbgridEh.
также имею кнопочку, при нажатии которой должен открываться Бланк Excel и в него заполняться данные строчки из mdb но в определенные ячейки.
т.е. например в столбце имя "Василий", каждая буква должна быть в отдельной конкретной ячейке, в А2-В в G2-а в R2-c итд...

до этого вместо dbgrida были editы и не было bd.
так вот я максимально коряво текст из editов переносил в скрытый stringGrid а потом уже в excel, это все настолько коряво и некрасиво, хоть и работает)) что аж стыдно показывать, решил все переделать.

куски старого кода:
Код:
begin
  for i := 1 to length(Edit1.TEXT) do

  begin
    StringGrid1.rows[0].Add(Edit1.Text[i]);
 end;

begin
  for i := 1 to length(Edit2.TEXT) do

  begin
    StringGrid1.rows[1].Add(Edit2.Text[i]);
 end;

Код:
XL. Range['N12'].value:=StringGrid1.Cells[0,0];
XL. Range['R12'].value:=StringGrid1.Cells[1,0];
XL. Range['V12'].value:=StringGrid1.Cells[2,0];
XL. Range['Z12'].value:=StringGrid1.Cells[3,0];
XL. Range['AD12'].value:=StringGrid1.Cells[4,0];
XL. Range['AH12'].value:=StringGrid1.Cells[5,0];
XL. Range['AL12'].value:=StringGrid1.Cells[6,0];
XL. Range['AP12'].value:=StringGrid1.Cells[7,0];
XL. Range['AT12'].value:=StringGrid1.Cells[8,0];
XL. Range['AX12'].value:=StringGrid1.Cells[9,0];
XL. Range['BB12'].value:=StringGrid1.Cells[10,0];
XL. Range['BF12'].value:=StringGrid1.Cells[11,0];
XL. Range['BJ12'].value:=StringGrid1.Cells[12,0];
XL. Range['BN12'].value:=StringGrid1.Cells[13,0];
XL. Range['BR12'].value:=StringGrid1.Cells[14,0];
XL. Range['BV12'].value:=StringGrid1.Cells[15,0];
XL. Range['BZ12'].value:=StringGrid1.Cells[16,0];
XL. Range['CD12'].value:=StringGrid1.Cells[17,0];
XL. Range['CH12'].value:=StringGrid1.Cells[18,0];
XL. Range['CL12'].value:=StringGrid1.Cells[19,0];
XL. Range['CP12'].value:=StringGrid1.Cells[20,0];
XL. Range['CT12'].value:=StringGrid1.Cells[21,0];
XL. Range['CX12'].value:=StringGrid1.Cells[22,0];
XL. Range['DB12'].value:=StringGrid1.Cells[23,0];
XL. Range['DF12'].value:=StringGrid1.Cells[24,0];
XL. Range['DJ12'].value:=StringGrid1.Cells[25,0];
XL. Range['DN12'].value:=StringGrid1.Cells[26,0];

//name
XL. Range['N14'].value:=StringGrid1.Cells[0,1];
XL. Range['R14'].value:=StringGrid1.Cells[1,1];
XL. Range['V14'].value:=StringGrid1.Cells[2,1];
XL. Range['Z14'].value:=StringGrid1.Cells[3,1];
XL. Range['AD14'].value:=StringGrid1.Cells[4,1];
XL. Range['AH14'].value:=StringGrid1.Cells[5,1];
XL. Range['AL14'].value:=StringGrid1.Cells[6,1];
XL. Range['AP14'].value:=StringGrid1.Cells[7,1];
XL. Range['AT14'].value:=StringGrid1.Cells[8,1];
XL. Range['AX14'].value:=StringGrid1.Cells[9,1];
XL. Range['BB14'].value:=StringGrid1.Cells[10,1];
XL. Range['BF14'].value:=StringGrid1.Cells[11,1];
XL. Range['BJ14'].value:=StringGrid1.Cells[12,1];
XL. Range['BN14'].value:=StringGrid1.Cells[13,1];
XL. Range['BR14'].value:=StringGrid1.Cells[14,1];
XL. Range['BV14'].value:=StringGrid1.Cells[15,1];
XL. Range['BZ14'].value:=StringGrid1.Cells[16,1];
XL. Range['CD14'].value:=StringGrid1.Cells[17,1];
XL. Range['CH14'].value:=StringGrid1.Cells[18,1];
XL. Range['CL14'].value:=StringGrid1.Cells[19,1];
XL. Range['CP14'].value:=StringGrid1.Cells[20,1];
XL. Range['CT14'].value:=StringGrid1.Cells[21,1];
XL. Range['CX14'].value:=StringGrid1.Cells[22,1];
XL. Range['DB14'].value:=StringGrid1.Cells[23,1];
XL. Range['DF14'].value:=StringGrid1.Cells[24,1];
XL. Range['DJ14'].value:=StringGrid1.Cells[25,1];
XL. Range['DN14'].value:=StringGrid1.Cells[26,1];

прошу подсказку как более эстетично разбить текст из таблицы в БД на ячейки
Ответить с цитированием
  #2  
Старый 02.02.2024, 03:23
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, что бы меньше переделывать, можно убрать StringGrid поменять заполнение экселя.
Код:
const
  xlCells : Array [1..26] Of String = ('N','R','V','Z',...); // Здесь перечислишь имена ячеек в эксель, которые заполняешь, только имена

...

var
  I : Integer;
begin
  For I := 1 To Min(Length(Edit1.Text),Length(Edit2.Text),Length(xlCells)) Do
    Begin
      XL.Range(xlCells[i] + '12').value := Edit1.Text[i];
      XL.Range(xlCells[i] + '14').value := Edit2.Text[i];
    End;
end;

как-то так.
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо lmikle за это полезное сообщение:
pozavchera (05.02.2024), Vagners (10.03.2024)
  #3  
Старый 05.02.2024, 23:28
pozavchera pozavchera вне форума
Прохожий
 
Регистрация: 30.01.2024
Сообщения: 2
Версия Delphi: delphi 11
Репутация: 10
По умолчанию

Спасибо! буду пробовать
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:44.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter