как открывать файлы Word из программы

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

как открывать файлы Word из программы

Сообщение yuriy kuznetsov » 04.02.2011 14:04:26

Здравствуйте уважаемые профессионалы. Я самоучка. Создаю свою первую программу для школы. Это что-то вроде электронного учебника. Порядка ста файлов с учебным материалом для этой программы набраны в Word. Файлы не большие, по одной страничке каждый, но по структуре сложные: текст, таблицы, рисунки, автофигуры. Создавать это всё по новой внутри программы большой труд, да и зачем, всё оно уже создано в Word. Вопрос такой: можно ли присоединить эти файлы к программе и открывать из неё при необходимости для просмотра и печати.
Немного знаком с Delphi. Там эту проблему можно решить с помощью компонента OleContainer. Но возможно ли это реализовать в Lazarus, с этим разобраться самостоятельно не удалось. Заранее спасибо.
yuriy kuznetsov
новенький
 
Сообщения: 12
Зарегистрирован: 05.11.2010 06:43:06

Re: как открывать файлы Word из программы

Сообщение Nik » 04.02.2011 14:21:40

Поддержки OLE в Lazarus пока (?) нет. В вашем случае можно сконвертировать все документы в HTML и уже HTML показывать в программе.
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: как открывать файлы Word из программы

Сообщение yuriy kuznetsov » 05.02.2011 06:15:43

А можно по-подробнее об этом? Как конвертировать? Как присоединить к программе? Как открывать в программе? Может быть пример какой. Сами понимаете я только начинаю в этом разбираться.
yuriy kuznetsov
новенький
 
Сообщения: 12
Зарегистрирован: 05.11.2010 06:43:06

Re: как открывать файлы Word из программы

Сообщение Vadim » 05.02.2011 06:27:13

yuriy kuznetsov
Попробуйте, для начала, из Word'а "Сохранить как..." в формате HTML и посмотреть, как будет выглядеть такой файл.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: как открывать файлы Word из программы

Сообщение sobee » 05.02.2011 07:16:11

Nik писал(а):Поддержки OLE в Lazarus пока (?) нет.

Посмотри http://sergej-zsv.narod.ru/Bin/OleFree/olefree.html. Может поможет.
sobee
новенький
 
Сообщения: 84
Зарегистрирован: 05.02.2008 00:23:46
Откуда: Снежинск, Челябинская обл.

Re: как открывать файлы Word из программы

Сообщение yuriy kuznetsov » 05.02.2011 10:55:14

to sobee
Очень близко к тому, что мне нужно. Но моих нынешних знаний не достаточно для того, что бы модифицировать это для решения своих задач.

to Nik & Vadim
Думаю, что смогу конвертировать документы в HTML. А как их потом показывать в программе? Хотелось бы сначала попробовать на одном файле, а потом уже браться за остальные.
yuriy kuznetsov
новенький
 
Сообщения: 12
Зарегистрирован: 05.11.2010 06:43:06

Re: как открывать файлы Word из программы

Сообщение Nik » 05.02.2011 11:59:40

Если требуется кросс-платформенный вариант, то для открытия HTML можно попробовать вот эти компоненты: http://code.google.com/p/thtmlviewer/ (поддерживаются не все возможности HTML/CSS, но для экспортированных из Word документов, возможно, хватит).

Если достаточно Windows, то хватит WebBrowser на основе Internet Explorer ActiveX.
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: как открывать файлы Word из программы

Сообщение m_guest » 05.02.2011 13:15:52

Ну открывать Word/Excel документы вполне можно, хотя это не совсем то...
Код: Выделить всё
unit tstu;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  comobj;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var
  path1,path2: string;
  Excel, Sheet,Wrd: OleVariant;
begin
  path1 := ExtractFilePath(Application.ExeName) + 'Reports\test2.xls';
  path2 := ExtractFilePath(Application.ExeName) + 'Reports\comp.doc';

  try
    Excel := CreateOLEObject('Excel.Application');
    Wrd   := CreateOLEObject('Word.Application');
  except
    on E:EOleSysError do
      ShowMessage(UTF8Encode(E.Message));
  end;

  try
    Excel.WorkBooks.Open(WideString(UTF8Decode(path1)));
    Wrd.Visible:=Visible;
    Wrd.Documents.Open(WideString(UTF8Decode(path2)));

    Excel.Visible := True;

    Excel.Range('B6') := 'B6';
    Excel.Range('B7') := 'B7';
    Excel.Range('G7') := 'G7';
    Excel.Range('I7') := 'I7';
  except
    on E: EOleException do
      ShowMessage(UTF8Encode(E.Message));
  end;

end;

end.



Lazarus 0.9.31/FPC 2.5.1/Win7/Office 2010
Думаю c FPC 2.4.2 тоже будет работать.
Единственно, переделать обработку искл. ситуаций, здесь коряво немного)
m_guest
постоялец
 
Сообщения: 193
Зарегистрирован: 14.08.2005 15:10:21

Re: как открывать файлы Word из программы

Сообщение mtdu » 05.02.2011 15:31:46

yuriy kuznetsov писал(а):Думаю, что смогу конвертировать документы в HTML. А как их потом показывать в программе? Хотелось бы сначала попробовать на одном файле, а потом уже браться за остальные.

Можно попробовать с помощью IpHtmlPanel. Пользоваться примерно так:
viewtopic.php?f=23&t=5176&p=43374&hilit=IpHtmlPanel#p36801
mtdu
новенький
 
Сообщения: 31
Зарегистрирован: 22.11.2009 13:56:51

Re: как открывать файлы Word из программы

Сообщение yuriy kuznetsov » 07.02.2011 13:25:44

Воспользовалься ссылкой от mtdu.
Большое спасибо всем кто принял участие в решении моей проблемы.
yuriy kuznetsov
новенький
 
Сообщения: 12
Зарегистрирован: 05.11.2010 06:43:06

Re: как открывать файлы Word из программы

Сообщение Ism » 07.02.2011 14:10:55

А почему не использовать компонент TProcess

в командную строку написать word.exe your.doc

таким же образом можно открывать документы в линукс в openoffice

кроме того openoffice поддерживает командную строку, что позволит задавать действия, получится замена OLE
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 44

Рейтинг@Mail.ru
cron