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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.08.2013, 01:20   #1
Dotha
Пользователь
 
Аватар для Dotha
 
Регистрация: 12.08.2009
Сообщений: 26
Лампочка из StringGrid в Excel по шаблону

Здравствуйте!
Подскажите пожалуйста, как реализовать такое:
Есть файл шаблона Excel (1.xls).
В нем есть текст сверху и снизу.
В середину загружается таблица из StringGrid, сколько строк неизвестно (1 строка, 10, 50).
Как сделать так чтобы нижний текст в Excel снижался в месте с добавленными строками?
Вот снимок экрана
Снимок.JPG
а вот сама выгрузка из StringGrid в Excel по шаблону
Код:
procedure TForm2.sButton5Click(Sender: TObject);
var
ExcelApp, Workbook, Range, Cell1, Cell2, ArrayData : Variant;
    TemplateFile, ExelOtch : String;
    BeginCol, BeginRow, i, j,x : integer;
    RowCount, ColCount : integer;
 
begin
  BeginCol := 1;
  BeginRow := 8;
 
 
  ExelOtch:=ExtractFilePath(Application.EXEName)+'bases\1.xls';
  ExcelApp := CreateOleObject('Excel.Application');
  Workbook := ExcelApp.WorkBooks.Add(ExelOtch);
  ExcelApp.Visible := true;
  ArrayData := VarArrayCreate([0,StringGrid2.RowCount+1, 0, StringGrid2.ColCount+1], varVariant);
  ExcelApp.Cells[2,2]:=OpenMenu.Text;
 
 
     for I := 0 to StringGrid2.ColCount-1 do
     for J := 1 to StringGrid2.RowCount-1 do
     begin
 
     Form2.StringGrid2.Cells[i,j]:=StringGrid2.Cells[i,j];
 
     end;
 
 
     for I := 0 to StringGrid2.ColCount-1 do
     for J := 1 to StringGrid2.RowCount-1 do
     ArrayData[j, i] := Form2.StringGrid2.Cells[i,j];
 
 
  Cell1 := WorkBook.WorkSheets[1].Cells[BeginRow, BeginCol];
  Cell2 := WorkBook.WorkSheets[1].Cells[BeginRow  + Form2.StringGrid2.RowCount - 1,
           BeginCol + Form2.StringGrid2.ColCount - 1];
 
  ExcelApp.WorkBooks[1].WorkSheets[1].Range[Cell1, Cell2].Borders.LineStyle := 1;
  ExcelApp.WorkBooks[1].WorkSheets[1].Range[Cell1, Cell2].Borders.Weight := 2;
  ExcelApp.WorkBooks[1].WorkSheets[1].Range[Cell1, Cell2].Borders.ColorIndex := 1;
 
  Range := WorkBook.WorkSheets[1].Range[Cell1, Cell2];
  Range.Value := ArrayData;
 
end;
Заранее спасибо!
Dotha вне форума Ответить с цитированием
Старый 31.08.2013, 10:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот я наверное сейчас чухню сморожу, но ИМХО такие вещи делают с помошью колонтитулов. А чухню потому что не помню есть ли в экзеле настройка шаблонов документа. В Ворде по крайней мере я так и делал - сам лист чист, а в колонтитулах ГОСТовская рамка.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.08.2013, 11:15   #3
Dotha
Пользователь
 
Аватар для Dotha
 
Регистрация: 12.08.2009
Сообщений: 26
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Вот я наверное сейчас чухню сморожу, но ИМХО такие вещи делают с помошью колонтитулов. А чухню потому что не помню есть ли в экзеле настройка шаблонов документа. В Ворде по крайней мере я так и делал - сам лист чист, а в колонтитулах ГОСТовская рамка.
А как это? На примере можешь показать?
Dotha вне форума Ответить с цитированием
Старый 31.08.2013, 11:16   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так есть же наверняка в WorkSheet-е или ему подчиненном объекте метод вставки строки по индексу. Почему не использовать? Только медленно все это
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 31.08.2013 в 11:22.
Аватар вне форума Ответить с цитированием
Старый 31.08.2013, 11:25   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
На примере можешь показать?
У меня только ЛибреОффис. Раньше делал такое но не в экзеле а в ворде.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.08.2013, 14:16   #6
Dotha
Пользователь
 
Аватар для Dotha
 
Регистрация: 12.08.2009
Сообщений: 26
По умолчанию

Разобрался с помощью этого примера.
Может кому пригодится!
StringGridToExcel.rar
Dotha вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c Excel в StringGrid SPD Общие вопросы Delphi 3 21.11.2011 14:31
выгрузка в Excel по шаблону Swatch Microsoft Office Access 4 10.11.2010 23:46
StringGrid и MS Excel ChEaTeR-abc Помощь студентам 1 05.07.2010 09:04
Как указать путь к шаблону excel ??? antoni БД в Delphi 4 04.11.2008 11:22
Excel и StringGrid apx_angel Компоненты Delphi 2 20.02.2007 00:20