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

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

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

Восстановить пароль

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 15.04.2009, 18:55   #1
kylebyakaa
 
Регистрация: 15.04.2009
Сообщений: 3
По умолчанию ИЗ Delphi в Excel

Не могу отправить данные из Delphi в Excel(Word). Данные: немного текста, StringGrid с n-строк, еще немного текста. ПОМОГИТЕ пожалуста!!!!
kylebyakaa вне форума
Старый 15.04.2009, 21:09   #2
SONce
Пользователь
 
Регистрация: 13.04.2009
Сообщений: 21
По умолчанию

код в студию
SONce вне форума
Старый 16.04.2009, 05:11   #3
kylebyakaa
 
Регистрация: 15.04.2009
Сообщений: 3
По умолчанию

Код:
procedure TForm3.Button2Click(Sender: TObject);
begin
//FindRowColumnlnTable('tabl', table_, Row_, Column_);
DoReport(ExtractFilePath(Application.ExeName)+'Templates\1.doc');
end;

Function FindRowColumnlnTable(FindText:string;var tab:variant; var
Row,Column:integer):boolean;
begin
FindRowColumnlnTable:=false;
try
W.Selection.Find.Text:=FindText;
if W.Selection.Find.Execute then begin
Column:=W.Selection.Cells.Item(1).Columnlndex;
Row:=W.Selection.Cells.Item(1).Rowlndex;
tab:=W.Selection.Tables.Item(1);
FindRowColumnlnTable:=true;
end;
except
FindRowColumnlnTable:=false;
end;
end;

procedure TForm3.DoReport(FName : String);
var FileName, w : OLEVariant;
    i: word;
    RowNam, j, g : integer;
begin
// выбор шаблона
FileName := FName;
// Соединение с OLE-сервером
WrdApp.Connect;
WrdApp.Visible := False;
// открытие выбраного шаблона в Word'e
WrdApp.Options.CheckSpellingAsYouType := False;
WrdApp.Options.CheckGrammarAsYouType := False;
WrdApp.Documents.Add(FileName, EmptyParam, EmptyParam, EmptyParam);
// подключение к документу-шаблону
WrdDoc.ConnectTo(WrdApp.ActiveDocument);

// поиск закладок в шаблоне и вставка данных
with Form3 do
for i := 1 to WrdDoc.Bookmarks.Count do begin
    w := i;
    WrdDoc.Bookmarks.Item(w).Select;
    if WrdDoc.Bookmarks.Item(w).Name = 'Cpec' then begin
        WrdDoc.Bookmarks.Item(w).Range.InsertAfter(Label3.Caption);
        Continue;
      end;
    if WrdDoc.Bookmarks.Item(w).Name = 'baza' then begin
        WrdDoc.Bookmarks.Item(w).Range.InsertAfter(Label5.Caption);
        Continue;
      end;
    if WrdDoc.Bookmarks.Item(w).Name = 'bydg' then begin
        WrdDoc.Bookmarks.Item(w).Range.InsertAfter(Label6.Caption);
        Continue;
      end;
  {  if FindRowColumnlnTable('tabl', table_, Row_, Column_)then begin
// Перед началом формирования курсор находится в таблице table_
// в ячейке Cell(Row_,Column_). Добавляем в таблицу необходимое
// количество строк, уменьшенное на 1 (поскольку одна строка
// в шаблоне уже есть).
W.Selection.InsertRows(2-1);
// Формируем первую строку табличной части документа.
table_.Cell(Row_,Column_+0).Range.Text:='KOVRIC TRIVEL RUG';
table_.Cell(Row_,Column_+1).Range.Text:='шт';
table_.Cell(Row_,Column_+2).Range.Text:='l';
table_.Cell(Row_,Column_+3).Range.Text:='342,00';
table_.Cell(Row_,Column_+4).Range.Text:= '342, 00' ;
table_.Cell(Row_,Column_+6).Range.Text:=' 2 0, 0 0 ';
table_.Cell(Row_,Column_+7) .Range.Text:=' 68, 40 ' ;
table_.Cell(Row_,Column +8).Range.Text:='41O,40';

  end;                 }

// отключение от сервера и показ документа
WrdDoc.Disconnect;
WrdApp.Visible := True;
WrdApp.Disconnect;
end;
end;

Последний раз редактировалось Stilet; 16.04.2009 в 10:49.
kylebyakaa вне форума
Старый 16.04.2009, 07:23   #4
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

Вот способ записи в Excel
Код:
  XL: variant;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
 // Обьект EXCEL
  XL := CreateOleObject('Excel.Application');
// Загружаем документ
  XL.WorkBooks.Open(ExtractFilePath(ParamStr(0))+'\akt.xls');
  {
  //Или создаем новый документ
  XL.WorkBooks.Add;
  }
 // Делаем его видимым
  XL.Visible := true;
  for i:=0 to StringGrid1.ColCount do
  for j:=0 to StringGrid1.RowCount do begin
  XL.WorkBooks[1].WorkSheets[1].Cells[i+1, j+1]:=StringGrid1.Cells[i,j];
  end;
end;
S@fer вне форума
Старый 16.04.2009, 08:37   #5
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Код:
procedure TForm1.DoReport(FName: String);
var
  FileName : string;
  WApp, WDoc, table_ : OLEVariant;
  i, w,  Row_ : Integer;
begin
// выбор шаблона
  FileName := FName;

  try
    WApp:= CreateOleObject('Word.Application');
  except
    on E : EOleError do begin
      MessageDlg('MS Word отсутствует на компьютере!', mtError, [mbOk], 0);
      Exit;
    end;
  end;

  try
    try
      WApp.Documents.Open(FIleName);
      WDoc := WApp.ActiveDocument;

      for i := 1 to WDoc.Bookmarks.Count do begin
        w := i;
        WDoc.Bookmarks.Item(w).Select;
        if WDoc.Bookmarks.Item(w).Name = 'Cpec' then begin
          WDoc.Bookmarks.Item(w).Range.InsertAfter(Label3.Caption);
          Continue;
        end;
        if WDoc.Bookmarks.Item(w).Name = 'baza' then begin
          WDoc.Bookmarks.Item(w).Range.InsertAfter(Label5.Caption);
          Continue;
        end;
        if WDoc.Bookmarks.Item(w).Name = 'bydg' then begin
          WDoc.Bookmarks.Item(w).Range.InsertAfter(Label6.Caption);
          Continue;
        end;
      end;

      WApp.Selection.Find.Text := 'tabl';
      if WApp.Selection.Find.Execute then begin
        table_ := WApp.Selection.Tables.Item(1);
        WApp.Selection.InsertRowsBelow(1); //вставка одной строки (2 - двух и т.д.)
        Row_ := 2;                 //начало со 2-й строки
        //цикл по кол-ву выводимых строк
        table_.Cell(Row_, 1).Range.Text:='KOVRIC TRIVEL RUG';
        table_.Cell(Row_, 2).Range.Text:='шт';
        table_.Cell(Row_, 3).Range.Text:='l';
        table_.Cell(Row_, 4).Range.Text:='342,00';
        table_.Cell(Row_, 5).Range.Text:= '342, 00' ;
        ...
        //цикл по кол-ву выводимых строк
      end;

      WApp.Visible := True;
    except
      on EOLEException do
        WApp.Quit;
    end;
  finally
    WDoc := Unassigned;
    WApp := Unassigned;
  end;
end;
Проверено, работает.
Скандербег вне форума
Старый 16.04.2009, 09:12   #6
kylebyakaa
 
Регистрация: 15.04.2009
Сообщений: 3
По умолчанию

Спасибочки ВСЕМ!!!! Щас буду пробовать!!!!!
kylebyakaa вне форума
Старый 16.04.2009, 10:22   #7
Demien
Форумчанин
 
Аватар для Demien
 
Регистрация: 01.08.2007
Сообщений: 222
По умолчанию

У меня тоже некоторые сложность при работе с Excel возникли... ((
Не могу разобраться как из файла ''*.xls'' загрузить в StringGreid определенные ячейки.
Жить тоже вредно, от этого умирают!!!
Demien вне форума
Старый 16.04.2009, 10:44   #8
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

Цитата:
Сообщение от Demien Посмотреть сообщение
У меня тоже некоторые сложность при работе с Excel возникли... ((
Не могу разобраться как из файла ''*.xls'' загрузить в StringGreid определенные ячейки.
Пользуйтесь поиском
http://www.programmersforum.ru/showthread.php?t=44679
S@fer вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi ->Excel->График по таблице->Delphi Avalonix БД в Delphi 2 30.10.2008 14:04
Delphi+Excel Ирисска БД в Delphi 5 18.11.2007 13:14
Delphi+Excel Suall БД в Delphi 0 30.04.2007 07:37
Delphi и Excel Dimon Win Api 1 24.02.2007 20:00