Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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


Ответ
 
Опции темы
Старый 29.05.2011, 10:53   #1
artemavd
Модератор
Заслуженный модератор
 
Регистрация: 05.06.2008
Сообщений: 4,181
Вопрос Вставка данных в шаблон документа в ячейку Excel из StringGrid

Собственно вопрос таков.

Есть: Есть некоторый шаблон - ОТЧЕТ.xls.
Что нужно: нужно не показывая самого редактора Excel подключиться к этому шаблону и вставить в него некоторые числовые данные.

Например, в ячейку С1 в шаблоне вставить значение из ячейки StringGrid1.Cells[1,1], т.е. чтобы было как-то так:
<указанная ячейка в шаблоне Excel>:=StringGrid1.Cells[1,1];

Важное условие: нужно, чтобы шаблон не изменял своих размеров строк и колонок, а также цветов, чтобы было все на месте. Как можно такое реализовать?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 29.05.2011, 11:35   #2
A-IX-2
Форумчанин
 
Аватар для A-IX-2
 
Регистрация: 08.10.2010
Сообщений: 101
По умолчанию

Не показывать Excel и сохранить в него можно так:

Код:
procedure TForm1.N3Click(Sender: TObject);
  var
    Excel, WorkBook, Sheet:variant;
    i, j: integer;
    FName: string;
begin 
  if SaveDialog1.Execute then FName := SaveDialog1.FileName
  else Exit;
  Excel:=CreateOleObject('Excel.Application');
  Excel.DisplayAlerts:=False;
  Excel.Visible:=False;
  Workbook:=Excel.Workbooks.Add;
  Workbook.SaveAs(FName);
  Sheet:= Workbook.ActiveSheet;
  Sheet.Cells[1,3]:=StringGrid1.Cells[1,1];
  Workbook.Save;
  Workbook.Close;
  Excel.Quit;
  Excel:= UnAssigned;
end;
Но вот как сделать, чтобы он добавлял, а не заново переписывал я не знаю.
"Думаешь, будет трудно? Конечно, будет! Но, только закаляя дух, людьми становятся люди!"
A-IX-2 вне форума Ответить с цитированием
Старый 29.05.2011, 12:22   #3
artemavd
Модератор
Заслуженный модератор
 
Регистрация: 05.06.2008
Сообщений: 4,181
По умолчанию

Да все нормально добавляет вроде . Спасибо. А если надо будет внести также диапозон значений? Например, в столбец С в Excel заполнить диапозон C1:C10 из StringGrid'a. Как в цикле передать из StringGrid'a понятно, а вот как указать этот диапозон в Excel'e?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 29.05.2011, 12:31   #4
Swarog
Форумчанин
 
Аватар для Swarog
 
Регистрация: 26.01.2010
Сообщений: 215
По умолчанию

Цитата:
Но вот как сделать, чтобы он добавлял, а не заново переписывал я не знаю.
а так не работает?

Код:
Sheet.Cells[1,3]:=Sheet.Cells[1,3] + StringGrid1.Cells[1,1];
Цитата:
Например, в столбец С в Excel заполнить диапозон C1:C10 из StringGrid'a. Как в цикле передать из StringGrid'a понятно, а вот как указать этот диапозон в Excel'e?
если использовать Sheet.Cells[X,Y] то вроде адресация ячеек совпадает просто переносишь данные, или я не прав?
Могу лишь пнуть в нужном направлении (ну или как получится)

Последний раз редактировалось artemavd; 29.05.2011 в 14:08.
Swarog вне форума Ответить с цитированием
Старый 29.05.2011, 13:49   #5
A-IX-2
Форумчанин
 
Аватар для A-IX-2
 
Регистрация: 08.10.2010
Сообщений: 101
По умолчанию

Адресация как раз не совпадает, в Excel нет ячеек с нулевыми индексами, т.е. при переносе в Excel надо добавлять к индексам 1. Так же в Excel Cells[строка,столбец], а в стрингрид Cells[столбец,строка].

Код:
for i:= 0 to StringGrid1.RowCount - 1 do
for j:= 0 to StringGrid1.ColCount - 1 do
Sheet.Cells[i+1, j+1]:=StringGrid1.Cells[j, i];
"Думаешь, будет трудно? Конечно, будет! Но, только закаляя дух, людьми становятся люди!"

Последний раз редактировалось A-IX-2; 29.05.2011 в 14:22.
A-IX-2 вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме от 7000 рублей в месяц



Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формирование документа Word на основе данных Excel gaevoy1 Microsoft Office Excel 10 11.04.2011 11:05
Вставка данных в ячейку Lvenok1987 Microsoft Office Excel 3 08.02.2011 12:25
Вставка данных из MySQL в RTF шаблон asus_p526 Фриланс 7 25.04.2010 01:04
Вставка данных(Excel) из clipboard в DBGrid mahsus Общие вопросы Delphi 1 07.10.2007 01:02


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Скидки на курсы GeekBrains 40%, выбирайте программу для себя