Icono-MecaNet
Certificado de seguridad del sitio
Nº DESCARGAS


Release date: Sábado 24 Febrero 2018
 

 
Delphi Source Code
 
Icono
"Extraer el texto de un documento de Word"

 
 



En esta sección de Código fuente en Delphi vamos a mostrar cómo podemos extraer el texto sin formato (lo que es un .txt) de un documento ".doc" de MicroSoft Word.

Para ello, he escrito esta pequeña app de ejemplo

Para poder realizar esta tarea tendremos que trabajar con objetos COM (Component Object Model), y para poder hacer esto debemos incluir en la clausula "Uses" la unidad "ComObj"

Dicho esto, en nuestro código tenemos dos funciones:

  • function WordInstalado: boolean;
  • function WordFile2txt(const FileName: string): string;

La tarea de extraer el texto de un documento Word la podemos realizar unicamente si la aplicación MicroSoft Word está instalada en el equipo donde se ejecute nuestra app, es por ello que la función WordFile2Txt lo primero que hace es comprobar que se cumple esta condición, llamando a la función WordInslatado

Los objetos COM se almacenan en Delphi como variables tipo variant, que debemos crear llamando a la función "CreateOleObject('Word.Application');" esta llamada nos devolverá un puntero a un objeto COM que guardamos en una variable tipo variant. Con las propiedades y métodos expuestos por este objeto podremos manipular un documento de Word.

La forma de funcionar de WordFile2txt es la siguiente:

  • Comprobamos que MicroSoft Word está instalado en el equipo
  • Creamos el objeto COM con la llamada a CreateOleObject('Word.Application')
  • Abrimos el archivo Word con el método Documents.open del objeto COM
  • Contabilizamos el número de caracteres de ese documento con la propiedad Documents.item(1).Characters.Count
  • Hacemos una copia de los caractéres del documento desde la posición cero hasta el número total de caracteres contabilizados
  • Cerramos el documento y liberamos el objeto COM

La versión de MicroSoft Word 2016 tiene la capacidad de abrir documentos ".PDF" y transformarlos a documentos Word, si tiene instalada esta versión en el equipo, nuestra aplicación podrá extraer el texto de documentos ".PDF" ademá de poder hacerlo con el resto de tipos de documentos soportados por MicroSoft Word.

En la siguiente imagen puedes ver un ejemplo de uso de esta app.

A continuación, puedes ver el código completo de la app, y si lo deseas puedes descargarlo todo (código y app) en un archivo "zip".

Unit1.pas
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtDlgs, ExtCtrls;

type
  TForm1 = class(TForm)
    OpenTextFileDialog1: TOpenTextFileDialog;
    Memo1: TMemo;
    Panel1: TPanel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
uses ComObj;

function WordInstalado: boolean;
var
  WordApp: variant;
begin
  try
    WordApp := CreateOleObject('Word.Application');
    WordApp.Visible := False;
    WordApp.Quit;
    result := true;
  except
    result := false;
  end;
end;



function WordFile2txt(const FileName: string): string;
var
  WordApp: Variant;
  CharsCount, i: integer;
begin
  result := '';
  if not WordInstalado then begin
    ShowMessage('Es necesario que MicroSoft Word esté instalado para poder realizar esta tarea.');
    exit;
  end;
  WordApp := CreateOleObject('Word.Application');
  try
    WordApp.Visible := False;
    WordApp.Documents.open(FileName, false, true);
    CharsCount := Wordapp.Documents.item(1).Characters.Count;
    Result := WordApp.Documents.item(1).Range(0, CharsCount).Text;
    WordApp.documents.item(1).Close;
  finally
    WordApp.Quit;
  end;

  //La cadena obtenida marca el final de línea con #13 en lugar de #13#10
  for i := 1 to length(Result) - 1 do
    if (Result[i] = #13) and (Result[i + 1] <> #10) then Insert(#10, Result, i + 1);
  Result := trim(Result);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenTextFileDialog1.Execute then begin
    Panel1.Caption:= 'Un momento por favor. Estamos realizamos la conversión...';
    Screen.Cursor:= crHourGlass;
    Button1.Enabled:=false;
    memo1.Text:=WordFile2Txt(OpenTextFileDialog1.FileName);
    Button1.Enabled:=true;
    Screen.Cursor:= crDefault;
    Panel1.Caption:=ExtractFileName(OpenTextFileDialog1.FileName);
  end;
end;

end.
Puede descargar el código fuente anterior con este enlace:
codigo-fuente-word.zip
Puede encontrar una versión Portable de Delphi en esta dirección:
http://www.andyaska.com/?act=download&id=34&mode=detail
 
Delphi Source Code


 
 


Loading...
www.cursomecanet.com
logo-MecaNet
Certificado de seguridad del sitio
Loading...