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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.09.2009, 11:28
Аватар для Anchorte
Anchorte Anchorte вне форума
Прохожий
 
Регистрация: 18.09.2009
Адрес: Курск
Сообщения: 49
Репутация: 10
Печаль Помогите победить EXCEL

Народ подскажите как вставить строку в таблицу excel при этом все остальные сдвинуть на позицию в низ, сохранив их формат.

пробовал сделать так:
Код:
Var
  x:variant;
  Tel,datD,datM,datY:String;
  myDate : TDateTime;
  i,z:integer;
begin
  z:=StrToInt(gar5.Text);
  x:=CreateOleObject('Excel.Application');
  x.WorkBooks.ADD(template:='D:\info-c\Бланки\Garant.xls');
  x.worksheets[1].Select;
  myDate:=Now;
  DateTimeToString(datD, 'dd', myDate);
  DateTimeToString(datM, 'mmmm', myDate);
  DateTimeToString(datY, 'yyyy', myDate);
  x.cells[StrToInt(gar7.Text),StrToInt(gar8.Text)]:='ГАРАНТИЙНЫЙ ТАЛОН  от   «' +datD+ '» ' +datM+'  '+datY+' г.';
  with Table3 do
   begin
    Table3.First;
    for i := 0 to 9 do
     if not EOF then
      begin
        x.cells[StrToInt(gar1.Text)+i+1,StrToInt(gar2.Text)].insert;
        x.cells[StrToInt(gar1.Text)+i,StrToInt(gar2.Text)]:=FieldByName  ('Наименование').AsString;
        x.Range['A'+IntToStr(z+i)+':C'+IntToStr(z+i)].select;
        x.selection.borders.linestyle:=1;
        Table3.Next;
      end;
   end;
  x.visible:=true;
но так вставляетьться только текст, а форматирование остаеться привязаным к заданым ячейкам.

подскажите как можно реализовать то что я хочу или где можно почитать литературу
Ответить с цитированием
  #2  
Старый 29.09.2009, 15:00
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Попоробуйте посмотреть как это делается в самом экселе с помощью макроса, и повторите в Delphi
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 29.09.2009, 18:00
Аватар для Anchorte
Anchorte Anchorte вне форума
Прохожий
 
Регистрация: 18.09.2009
Адрес: Курск
Сообщения: 49
Репутация: 10
По умолчанию

Другой вопрос как перевести на Delphi
Код:
Selection.Insert Shift:=xlDown
подскажите если не трудно
Ответить с цитированием
  #4  
Старый 30.09.2009, 11:22
Аватар для pesi
pesi pesi вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 275
Репутация: 43
По умолчанию

а в чем вопрос то?
Ответить с цитированием
  #5  
Старый 30.09.2009, 11:56
Аватар для Anchorte
Anchorte Anchorte вне форума
Прохожий
 
Регистрация: 18.09.2009
Адрес: Курск
Сообщения: 49
Репутация: 10
По умолчанию

Цитата:
Сообщение от pesi
а в чем вопрос то?
Уже не в чем, разобрался.
Всем спасибо за помощь.
Ответить с цитированием
  #6  
Старый 30.09.2009, 12:00
Аватар для pesi
pesi pesi вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 275
Репутация: 43
По умолчанию

Код:
const
xlDown = -4121;
var
x, cel:variant;
i:integer;
begin
 try
  x:= CreateOleObject('Excel.Application');
  x.WorkBooks.open(ExtractFilePath(ParamStr(0))+'1.xls');
  x.Visible:=true;
  for i:=1 to 20 do
  x.Workbooks[1].WorkSheets[3].Cells[i,2]:=i;
  x.Workbooks[1].WorkSheets[3].Rows['8:8'].Select;
  x.Selection.Insert(Shift:=xlDown);
  x.Workbooks[1].WorkSheets[3].range['B8'].numberformat:='@'; //задаст текстовый формат ячейки
  except
  showmessage('Error, error, Error');
 end;
end;
Ответить с цитированием
  #7  
Старый 30.09.2009, 12:37
Аватар для Anchorte
Anchorte Anchorte вне форума
Прохожий
 
Регистрация: 18.09.2009
Адрес: Курск
Сообщения: 49
Репутация: 10
Сообщение Результат

Вот то что я выстрадал, если у кого либо есть идеи по доработке просьба отписаться
Код:
Var
  x:variant;
  Tel,datD,datM,datY:String;
  myDate : TDateTime;
  i,z:integer;
  const xlShiftDown = $FFFFEFE7;
begin
  z:=StrToInt(gar5.Text);
  x:=CreateOleObject('Excel.Application');
  x.WorkBooks.ADD(template:='D:\info-c\Бланки\Garant.xls');
  x.worksheets[1].Select;
  myDate:=Now;
  DateTimeToString(datD, 'dd', myDate);
  DateTimeToString(datM, 'mmmm', myDate);
  DateTimeToString(datY, 'yyyy', myDate);
  x.cells[StrToInt(gar7.Text),StrToInt(gar8.Text)]:='ГАРАНТИЙНЫЙ ТАЛОН  от   «' +datD+ '» ' +datM+'  '+datY+' г.';
  with Table3 do
   begin
    Table3.First;
    for i := 0 to 9 do
     if not EOF then
      begin
        z:=StrToInt(gar1.Text)+i+1;
        x.cells[StrToInt(gar1.Text)+i,StrToInt(gar2.Text)]:=FieldByName('Наименование').AsString;
        x.Range['A'+IntToStr(StrToInt(gar1.Text)+i)+':C'+IntToStr(StrToInt(gar1.Text)+i)].select;
        x.selection.borders.linestyle:=1;     
        x.Range[IntToStr(z)+':'+IntToStr(z), EmptyParam].EntireRow.Insert(xlShiftDown, EmptyParam);

        Table3.Next;
      end;
   end;
  x.visible:=true;
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter