Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > Передача таблицы в Word


Автор: Sad_Hamster 12.10.2007, 14:09
Подскажите, Можно ли через вариантный массив (VarArrayCreate) передать в Word таблицу целиком,  вместо записи данных в каждую ячейку поочередно. 
Хочется следующего аналога, только для Word:
Код

 // Создаем Вариантный Массив, который заполним выходными данными
  ArrayData := VarArrayCreate([1, RowCount, 1, ColCount], varVariant);
....
// Область, в которую будем выводить данные
  Range := WorkBook.WorkSheets[1].Range[Cell1, Cell2];
....
  // Вывод данных
  Range.Value := ArrayData;

Автор: Sad_Hamster 16.10.2007, 07:19
Вот вроде наиболее оптимальный вариант решения.
Код

var
  Rng: Range;
  MSWord : TWordApplication;
  VR : OleVariant;
  ST : TStringList;
  I, J : Integer;
  S : string;

begin
  ST := TStringList.Create;
  for I := 1 to 1000 do
  begin
    S := '';
    for J := 1 to 50 do
    begin
      if Length(s) > 0 then S := S + ',';
      S := S + IntToStr(J);
    end;
    ST.Add(S);
  end;


  Try
    MsWord := TWordApplication.Create(Self);
    MsWord.Connect;
    MsWord.Visible := False;
    MsWord.Documents.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam);

    Rng := MsWord.Selection.Range;
    VR := wdCollapseEnd;
    Rng.Collapse(VR);
    Rng.InsertAfter(St.Text);
    VR := ',';
    Rng.ConvertToTable(VR        , EmptyParam,
                       EmptyParam, EmptyParam,
                       EmptyParam, EmptyParam,
                       EmptyParam, EmptyParam,
                       EmptyParam, EmptyParam,
                       EmptyParam, EmptyParam,
                       EmptyParam, EmptyParam,
                       EmptyParam, EmptyParam);




    MsWord.Visible := True;
    MsWord.Disconnect;
  Finally
    MsWord.Free;
  end;
  St.Free;
end;


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)