Foros del Web » Programando para Internet » ASPX (.net) »

cambiar formato .doc a .txt

Estas en el tema de cambiar formato .doc a .txt en el foro de ASPX (.net) en Foros del Web. Por favor necesito ayuda con este tema: Tengo un sitio web desarrollado en c# asp.net la cual realiza búsquedas en archivos de texto(por palabra, parecido ...
  #1 (permalink)  
Antiguo 07/07/2009, 16:14
 
Fecha de Ingreso: junio-2009
Mensajes: 12
Antigüedad: 14 años, 9 meses
Puntos: 0
cambiar formato .doc a .txt

Por favor necesito ayuda con este tema:

Tengo un sitio web desarrollado en c# asp.net la cual realiza búsquedas en archivos de texto(por palabra, parecido a google), pero los usuarios ingresaran al sistema archivos .doc :( lo que necesito es de alguna manera (internamente) transformar estos archivos .doc a .txt para realizar la búsqueda. Les ruego que me ayuden.
  #2 (permalink)  
Antiguo 08/07/2009, 08:00
Avatar de pyroCL  
Fecha de Ingreso: marzo-2009
Ubicación: C#
Mensajes: 261
Antigüedad: 15 años
Puntos: 2
Respuesta: cambiar formato .doc a .txt

Hola.

Mira en esta dirección está el código y funciona perfecto...

http://www.dotnetspider.com/forum/17...c-asp-net.aspx

Saludos
__________________
La verdadera sabiduría está en reconocer la propia ignorancia.
  #3 (permalink)  
Antiguo 30/07/2009, 15:57
 
Fecha de Ingreso: junio-2009
Mensajes: 12
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: cambiar formato .doc a .txt

Hola, muuuuchas gracias por responder me sirvio un monton. ahora tengo un problema, el código funciona bien en mi máquina pero cuando lo subo al servidor no funciona, primero tenia un error con el COM de word configure el com por cierto solo encontre el document word 97-2003 y le agrege en la ficha seguridad usuarios: aspnet, network, ahora no me muestra el error ni nada, simplemente se queda cargando la pagina. Por favor necesito nuevamente de tu ayuda o alguien que sepa como solucionar esto, muuuuchas gracias nuevamente. :(
  #4 (permalink)  
Antiguo 31/07/2009, 07:06
Avatar de pyroCL  
Fecha de Ingreso: marzo-2009
Ubicación: C#
Mensajes: 261
Antigüedad: 15 años
Puntos: 2
Respuesta: cambiar formato .doc a .txt

Se queda cargando?...

Revisa estas opciones:
1) ve si estas cargando tu aplicacion word correctamente.
2)ve si estas cerrando y liberando todas las variables utilizadas del word o txt al final de tu programa
3) revisa el "task manager" de tu servidor, para ver si no tienes muchas tareas de word abiertas. Si es que es así, cierralas y haz correr nuevamente tu sistema.
4) si es que estas abriendo una vista preliminar de tu word, puede que la este abriendo solo en el servidor y no para el usuario en una maquina local. //trata de no hacerlo


Espero te sirva alguno de estos pasos.

Saludos!
__________________
La verdadera sabiduría está en reconocer la propia ignorancia.
  #5 (permalink)  
Antiguo 31/07/2009, 15:28
 
Fecha de Ingreso: junio-2009
Mensajes: 12
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: cambiar formato .doc a .txt

Hola, gracias nuevamente por responder, revise lo que me indicaste (gracias).
1) Estoy unsando un ApplicationClass y Document para abrir creo que hasta ahi llega, la ruta que le mando es algo como esto (http : / / localhost / publico / documentos/ prueba.docx) el localhost varia de a cuerdo al ip del servidor. utilizo SaveAs con la ruta (http : / / localhost /publico / documentos_txt / prueba.txt), todo esto basandome en el ejemplo que me pasaste, creo que la parte del SaveAs no la hace o realmente no se que pueda ser :( (mmm no tomes en cuenta los espacios en las direcciones, todavia no puedo "compartir enlaces" :))
2) Estoy cerrando: document.close() y word.quit() como en el ejemplo.
3) Revise el task manager pero no funciono.
4) Creo que aqui explico mejor lo que quiero hacer: El usuario puede subir documentos word al servidor, lo que necesito es guardar estos documentos en formato txt para realizar busquedas por contenido con un algoritmo de busqueda que solo funciona con archivos txt.

Por favor si pudieras ayudarme.....:(
  #6 (permalink)  
Antiguo 03/08/2009, 11:25
Avatar de pyroCL  
Fecha de Ingreso: marzo-2009
Ubicación: C#
Mensajes: 261
Antigüedad: 15 años
Puntos: 2
Respuesta: cambiar formato .doc a .txt

Tu tienes acceso para hacer alguna modificación en tu servidor?

Si es que es así pk no creas en el disco D (o cualquier otro disco) de tu servidor una carpeta (datos) y ahí salvas el archivo que estas creando...

entonces le das como ruta
D:/Datos/nombreArchivo.txt
y luego haces un enlace de descarga o algo.... a ese archivo..




Un ejemplo de como descargarlo sería:

si ruta = D:/Datos/nombreArchivo.txt

Código C#:
Ver original
  1. private void descarga(ruta)
  2. {
  3.    try
  4.     {
  5.        Response.ClearContent();
  6.         Response.ContentType = "text/plain"
  7.         Response.WriteFile(ruta)
  8.         Response.AddHeader("Content-disposition", "attachment; filename=nombreArchivo.txt");
  9.         Response.End();
  10.         Response.Close();
  11.     }
  12.     catch(Exception ex)
  13.     {
  14.          lblMensaje="Error" + ex.Message();
  15.     }
  16. }


Saludos!
__________________
La verdadera sabiduría está en reconocer la propia ignorancia.
  #7 (permalink)  
Antiguo 03/08/2009, 16:46
 
Fecha de Ingreso: junio-2009
Mensajes: 12
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: cambiar formato .doc a .txt

Hola gracias por responder, el problema esta en abrir el documento de word, este documento esta guardado en un directorio virtual /publico/documentos/docum.docx quiero abrirlo desde ahi para transformarlo a txt pero no lo abre, la aplicacion word si la abre me fije en el administrador de tareas y cuando paro el proceso me da la siguiente excepcion: "Excepción de HRESULT: 0x800706BE" no se como puedo hacer para abrir el documento de word para guardarlo como txt. :(
  #8 (permalink)  
Antiguo 04/08/2009, 06:08
Avatar de pyroCL  
Fecha de Ingreso: marzo-2009
Ubicación: C#
Mensajes: 261
Antigüedad: 15 años
Puntos: 2
Respuesta: cambiar formato .doc a .txt

docx?... estas usando las librerias de office 2007? tu server tiene office 2007 instalado...

intenta usar documentos .doc a lo mejor ahi está el error...

Saludos!

Edito: ese error se produce casi siempre por conflicto con los complementos de word 2007. Por esto usa mejor .doc y no .docx

Saludos
__________________
La verdadera sabiduría está en reconocer la propia ignorancia.
  #9 (permalink)  
Antiguo 04/08/2009, 06:53
 
Fecha de Ingreso: junio-2009
Mensajes: 12
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: cambiar formato .doc a .txt

Hola de nuevo, gracias por responder. La conversion de word a txt funciona en mi máquina local, cuando lo pruebo en el IIS ya no funciona, crea Word.Application pero ya no abre el archivo de word. Una preguntita mas cómo instalo word en mi servidor? gracias por tu ayuda.
  #10 (permalink)  
Antiguo 04/08/2009, 07:00
Avatar de pyroCL  
Fecha de Ingreso: marzo-2009
Ubicación: C#
Mensajes: 261
Antigüedad: 15 años
Puntos: 2
Respuesta: cambiar formato .doc a .txt

Para instalar office en tu servidor debes ser administradora de este.

El error que tienes entonces es porque en tu servidor no tienes las librerias de office necesarias para poder crear el word... (microsoft office interop o algo asi)

A todo esto podrías poner tu codigo e indicar donde se cae...

Saludos!
__________________
La verdadera sabiduría está en reconocer la propia ignorancia.
  #11 (permalink)  
Antiguo 04/08/2009, 09:08
 
Fecha de Ingreso: junio-2009
Mensajes: 12
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: cambiar formato .doc a .txt

ahi va:
public void transformar_word_a_txt(string ruta_docu)
{
FileInfo file = new FileInfo(ruta_docu);
if (file.Exists)
{
Word.Application word_app = new Word.Application();
//hasta ahi se ejecuta en el servidor el resto no se si se ejecuta Object saveChanges = Word.WdSaveOptions.wdSaveChanges;
Object fileName = file.FullName;
Object readOnly = false;
Object visible = true;
Object nullobj = Missing.Value;
Object docType = Word.WdDocumentType.wdTypeDocument;
Word.Document doc = word_app.Documents.Open(ref fileName, ref nullobj, ref readOnly, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj);
string[] para_nombretxt = ruta_docu.Split('/');
string[] nombretxt = para_nombretxt[5].Split('.');
string nombre_doc_txt = cadena + nombreServidor + '/' + para_nombretxt[1] + '/' + para_nombretxt[2] + '/' + "documentosTxt" + '/' + nombretxt[0] + ".txt";
hd_ruta_doctxt.Value = nombre_doc_txt;
string unidad = "c:";
string nom_doc_txt = set_ruta_doc_txt(unidad + '/' + para_nombretxt[1] + '/' + para_nombretxt[2] + '/' + "documentosTxt" + '/' + nombretxt[0] + ".txt");
string[] paraFileName = nom_doc_txt.Split(':');

Object FileNametxt = unidad + paraFileName[1].ToString();

Object FileFormat = Word.WdSaveFormat.wdFormatText;
Object Encoding = MsoEncoding.msoEncodingEBCDICLatinAmericaSpain;
Object lookComents = true;
Object password = nullobj;
Object addTorecent = false;
Object writePassword = nullobj;
Object Readonly = false;
Object embedttfonts = false;
Object savenativepictures = true;
Object saveforms = false;
Object saveaocelater = false;
Object insertlines = true;
Object allowSubstition = true;
Object lineEnding = WdLineEndingType.wdCRLF;
Object addBidimarks = false;
try
{

doc.SaveAs(ref FileNametxt, ref FileFormat, ref nullobj, ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj, ref saveforms, ref saveaocelater,
ref nullobj, ref insertlines, ref nullobj, ref nullobj, ref nullobj);

doc.Close(ref nullobj, ref nullobj, ref nullobj);
word_app.Quit(ref nullobj, ref nullobj, ref nullobj);
}


catch (ExternalException ex)
{
Response.Write("error:"+ ex.Message);
Object refe = System.Reflection.Missing.Value;
doc.Close(ref refe, ref refe, ref refe);
word_app.Quit(ref refe, ref refe, ref refe);
}
}
}

Este código funciona en mi maquina es decir con Local, pero en el IIS no se queda como colgado, creo que es porque no se cierra Word.Application en el IIS, viendo el administrador de tareas hay un proceso de ASPNET(usuario que agrege para que funcionara en el servidor) WINWORD.exe que queda abierto. No estoy muy segura pero creo que puede ser por esto. auxilio!!!:(
  #12 (permalink)  
Antiguo 04/08/2009, 10:01
Avatar de pyroCL  
Fecha de Ingreso: marzo-2009
Ubicación: C#
Mensajes: 261
Antigüedad: 15 años
Puntos: 2
Respuesta: cambiar formato .doc a .txt

La ruta que le das al archivo me imagino que es una ruta de tu computador cierto? si es así... el usuario asp tiene acceso a tu pc?... por ahí puede ir tu error...

Lo que podrías hacer es enviar el archivo a alguna ruta del servidor, guardarlo primero en el servidor y despues le das la ruta nueva para que se abierto el archivo doc.

Prueba con eso.

Saludos!
__________________
La verdadera sabiduría está en reconocer la propia ignorancia.
  #13 (permalink)  
Antiguo 04/08/2009, 17:07
 
Fecha de Ingreso: junio-2009
Mensajes: 12
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: cambiar formato .doc a .txt

Creo que no puedo instalar word en el servidor porque no tengo permisos. Te explico mejor: cree un directorio virtual llamado publico ahi se puede subir los archivos (probado con el IIS) word, este directorio virtual tiene la ruta c: / publico / documentos_word / prueba.doc, desde ahi es que trato de abrir el archivo pero no funciona, luego de abrir lo guardo como c: / publico / documentos_txt / prueba.txt, bueno almenos es lo que me gustaria hacer, desde mi localhost funciona, pero probando en el IIS no, no se como solucionarlo, he intentado agarrar el contenido del word en una variable tipo string y luego ponerlo en un txt. localmente funciona pero en el IIS me sale el siguiente error: Error al recuperar un generador de clases COM debido al siguiente error: 80080005. :(
  #14 (permalink)  
Antiguo 05/08/2009, 11:36
Avatar de pyroCL  
Fecha de Ingreso: marzo-2009
Ubicación: C#
Mensajes: 261
Antigüedad: 15 años
Puntos: 2
Respuesta: cambiar formato .doc a .txt

Hola...

Eso tiene pinta de ser un error de permisos.... pero insisto si no tienes instalado office en tu servidor, no estoy seguro que puedas usar las librerias interop office...

revisa este link

Y puedes buscar tu error en google

Te darás cuenta que el error es con la libreria (COM)

Saludos!
__________________
La verdadera sabiduría está en reconocer la propia ignorancia.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:00.