Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 05.08.2012, 15:09   #1
armrock
Пользователь
 
Регистрация: 04.08.2012
Сообщений: 27
По умолчанию StrngGrid Excel Не полностью экспортирует

ЕСть код экспорта из stringrid в excel, но он переносит только данные таблицы. А КАК СДЕЛАТЬ ЧТО Б ПЕРЕНОСИЛ ДАННЫЕ С ШАПКОЙ,кароче точно так как есть!!!!

Код:
procedure TForm4.BitBtn5Click(Sender: TObject);
var
     ExcelApp, Workbook, Range, Cell1, Cell2, ArrayData  : Variant;
     BeginCol, BeginRow, RowCount, ColCount, i, j : integer;
 begin
     BeginCol := 1;
     BeginRow := 1;
     ExcelApp := CreateOleObject('Excel.Application');
     ExcelApp.Application.EnableEvents := false;
     Workbook := ExcelApp.WorkBooks.Add;
     RowCount := stringgrid1.RowCount;
     ColCount := stringgrid1.ColCount;
     ArrayData := VarArrayCreate([0, RowCount+1, 0, ColCount+1], varVariant);
     for I := 0 to RowCount-1 do
     for j := 0 to ColCount-1 do
     ArrayData[I+1, j+1] := stringgrid1.Cells[j,i+1];
     ExcelApp.cells[1,1].select;
     Cell1 := WorkBook.WorkSheets[1].Cells[BeginRow, BeginCol];
     Cell2 := WorkBook.WorkSheets[1].Cells
     [BeginRow  + RowCount-1, BeginCol + ColCount-1];
     Range := WorkBook.WorkSheets[1].Range[Cell1, Cell2];
     Range.Value := ArrayData;
     ExcelApp.Visible := true;
end;
armrock вне форума
Старый 05.08.2012, 16:40   #2
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Так а вы эту шапку не забираете из стринггрида
Код:
   for I := 0 to RowCount-1 do
     for j := 0 to ColCount-1 do
     ArrayData[I+1, j+1] := stringgrid1.Cells[j,i+1];
Измените на:

Код:
   for I := 0 to RowCount-1 do
     for j := 0 to ColCount-1 do
     ArrayData[I+1, j+1] := stringgrid1.Cells[j,i];
Базиля вне форума
Старый 05.08.2012, 17:01   #3
armrock
Пользователь
 
Регистрация: 04.08.2012
Сообщений: 27
По умолчанию 111

Блин.. Вот я слепой... Спасибо!!! Может за одно ещё подскажете как таблицу нарисовать в excel и ЗАГАЛОВОК, а то просто данные не очень красиво=)
armrock вне форума
Старый 05.08.2012, 18:21   #4
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Для указания заголока самой таблицы, нужно спера объединить ячейки.
Приведу вам пример:
Код:
excel.WorkBooks[1].WorkSheets[1].Range['A1:A5'].Merge;
Далее задаем заголовок:
Код:
excel.WorkBooks[1].WorkSheets[1].Range['A1'].Value:='Мой заголовок';
Для красоты, выравниваем сам заголовок:
Код:
excel.WorkBooks[1].WorkSheets[1].Range['A1'].HorizontalAlignment := xlCenter;
Для прорисовки таблицы, для начала необходмо выделить область которую и будем прорисовывать:
Код:
excel.WorkBooks[1].WorkSheets[1].Range['A2:H5'].select;
Ну и далее остается только прописать выделение нашего диапазона, где указывается что мы хотим выделить каждую из всех сторон таблицы и задается сама ширина линий:
Код:
excel.Selection.Borders[xlEdgeLeft].LineStyle := xlContinuous;
excel.Selection.Borders[xlEdgeLeft].Weight := xlThin;
excel.Selection.Borders[xlEdgeTop].LineStyle := xlContinuous;
excel.Selection.Borders[xlEdgeTop].Weight := xlThin;
excel.Selection.Borders[xlEdgeBottom].LineStyle := xlContinuous;
excel.Selection.Borders[xlEdgeBottom].Weight := xlThin;
excel.Selection.Borders[xlEdgeRight].LineStyle := xlContinuous;
excel.Selection.Borders[xlEdgeRight].Weight := xlThin;
Вообще есть такая полезная штука, называется она - макрос. Пишите макрос, смотрите на полученный код и все становится ясно.

Последний раз редактировалось Базиля; 05.08.2012 в 18:24.
Базиля вне форума
Старый 05.08.2012, 19:34   #5
armrock
Пользователь
 
Регистрация: 04.08.2012
Сообщений: 27
По умолчанию 111

Спасибо большое!!! Всё сделал! Всё работает!
armrock вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Убить подключение к базе полностью Dozent БД в Delphi 11 02.05.2012 13:52
Программу на СИ (не С++ !), только полностью ноунейм Помощь студентам 3 22.01.2011 14:38
Не полностью выключается компютор vah-smile Компьютерное железо 3 27.11.2009 19:25
Цикл работает не полностью почему? foE Компоненты Delphi 2 07.06.2009 14:32
DBGrid как StrngGrid Maxs Компоненты Delphi 9 14.05.2009 16:55