|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Вставка в 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
|
|||
|
|||
Ну, что бы меньше переделывать, можно убрать 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
|
|||
|
|||
Спасибо! буду пробовать
|