Home :: Otros :: Productividad :: Trabajando con Word en Visual Studio 2010 y C#
 
Creando-Documento-en-MSWord-con-C#

Trabajando con Word en Visual Studio 2010 y C#

ene 10, 2012 en Productividad por Victor Parasi

Este post esta hecho para explicar como buscar y reemplazar e insertar tablas en Word mediante Visual Studio y C#

FacebookGoogle BookmarksGoogle GmailTwitterYahoo MailHotmailLinkedInShare

Este post es una extensión de uno que ya tiene algo de tiempo, pero lo hice porque me pidieron ayuda en explicar como se hacen algunas cosas. No voy a explicar como interactuar con el documento Word, eso esta en el post anterior, lo que voy a hacer es presentar dos casos puntuales de automatización.

Búsqueda y Reemplazo de Palabras.

Imaginemos que tenemos un documento y queremos reemplazar una palabra por otra.

Para ubicarte en la forma que he trabajado, les comento que he definido un proyecto del tipo ClassLibrary y allí he colocado los métodos necesarios.

 

public class WordCsharp
    {

        Word.Application _objWordApplication; //Objeto Word
        Word.Document _objWordDocument;  //Objeto Document
        Object oMissing = System.Reflection.Missing.Value;

	//Funcion que sirve para abrir un archivo de Word creado previamente.
        private void LoadWordFile(string _filename)
        {
            _objWordApplication = new Word.Application();
            _objWordDocument = _objWordApplication.Documents.Open(_filename,false,false,false,
				ref oMissing, ref oMissing,
				ref oMissing, ref oMissing);
            _objWordApplication.Visible = true;
        }

	//Funcion que Busca y reemplaza un texto por otro.
        public void FindReplace(string _filename, string _find, string _replace)
        {
            	//Abrimos el archivo
		LoadWordFile(_filename);
		//Seleccionamos todo el documento para buscar y reemplazar el texto
                Word.Find findObject = _objWordApplication.Selection.Find;
                findObject.ClearFormatting();
                findObject.Text = _find;
                findObject.Replacement.ClearFormatting();
                findObject.Replacement.Text = _replace;

                //Escoger esta opción permite reemplzar todas las
		//ocurrencias del texto en el documento.
		object replaceAll = Word.WdReplace.wdReplaceAll;
                findObject.Execute(ref oMissing, ref oMissing,
				   ref oMissing, ref oMissing, ref oMissing,
                                   ref oMissing, ref oMissing, ref oMissing,
				   ref oMissing, ref oMissing, ref replaceAll,
				   ref oMissing, ref oMissing, ref oMissing,
				   ref oMissing);
            }

        }
    }

 

Insertando una Tabla

Continuando con la misma clase anterior, ahora vamos a crear un método que inserte, al final del documento, una tabla. La dimensión de la tabla la puedes pasar como parámetro.

public void InsertTable(string _filename,int _col, int _row)
        {

            //Abrimos el archivo
            LoadWordFile(_filename);
            //Bookmark de final del archivo
	    Object end_document="\\endofdoc";
	    //Definimos la tabla
            Word.Table _table;
            Word.Range wrdRng = _objWordDocument.Bookmarks.get_Item(ref end_document).Range;
            _table = _objWordDocument.Tables.Add(wrdRng, _row, _col,
					ref oMissing, ref oMissing);
            _table.Range.ParagraphFormat.SpaceAfter = 6;
            int r, c;
            string strText;
            for (r = 1; r <= _row; r++)
                for (c = 1; c <= _col; c++)
                {
		    //Este es el texto que vamos a colocar en cada Celda
                    strText = "r" + r + "c" + c;
                    _table.Cell(r, c).Range.Text = strText;
                }
            //Cambiando los items de la primera fila
            _table.Rows[1].Range.Font.Bold = 1;
            _table.Rows[1].Range.Font.Italic = 1;
            //Visualizando los bordes Verticales y Horizontales
            _table.Borders[Word.WdBorderType.wdBorderVertical].Visible=true ;
            _table.Borders[Word.WdBorderType.wdBorderHorizontal].Visible = true; 

        }

Observa con cuidado que en el método anterior se abre el documento nuevamente. Esa línea la puedes quitar si es que sobre UN solo documento se va a aplicar varias opciones.

 

Espero que le saquen provecho a este post automatizando cada vez mas cosas en Word.


Autor: Victor Parasi

Siempre es difícil escribir sobre uno mismo, qué contar, o por donde empezar, suele ser todo un dilema al momento de presentarse. Aquí vamos. Les diré que soy peruano, Ingeniero por vocación, dedicado a la docencia y siempre en la búsqueda de programar cada vez mejor. Aunque a veces algo terco, sé que no todo en la vida es blanco o negro. Existe el Open Source, y lo respeto pero me llevo mejor con el .Net. Si me hablas de preferencias, te digo que C#, C++, una buena película, colores oscuros, escribir, leer e investigar. Para terminar les diré que amo muchísimo a una mujer espectacular y que es la dueña de mi corazón.


Deja un comentario

   

copstone en Facebook

Otros artículos

Uno, dos, tres, cuál es el número que obtendré esta vez?. No sé si te ha pasado pero cuando deseo generar un número aleatorio, a veces, se convierte en un gran dolor de cabeza. No por lo difícil que puede resultar el comando o rutina a utilizar, sino porque siempre sale el mismo número, una y otra vez. Espero que al leer este artículo te pueda ayudar a resolver este problema.

FacebookGoogle BookmarksGoogle GmailTwitterYahoo MailHotmailLinkedInShare

A que no sabías que puedes crear y ejecutar aplicaciones en PHP desde el IDE de Visual Studio, te dejo este post para que te enteres más acerca de este tema.

FacebookGoogle BookmarksGoogle GmailTwitterYahoo MailHotmailLinkedInShare

Si quieres saber como permitir una sola instancia de tu programa, este es el artículo para tí. En este artículo te voy a enseñar a crear programas que no permitan que el usuario abra dos veces tu programa sino que solamente pueda abrirlo una vez.

FacebookGoogle BookmarksGoogle GmailTwitterYahoo MailHotmailLinkedInShare

Los métodos mas conocidos para realizar tareas en segundo plano son la clase AutoResetEvent y el componente BackgroundWorker, pero ¿qué usar en cada caso? Sencillo, si lo que requieres es poner varias tareas en segundo plano pero es necesario que tu aplicación espere a que todas las tareas hayan terminado para continuar con el flujo entonces la opción es AutoresetEvent; por otro lado, si lo que se busca es poner procesos pesados en segundo plano y no es necesario esperar a que todos terminen al mismo tiempo entonces implementa BackgroundWorker, este último con la ventaja sobre AutoresetEvent, que puede tener acceso a la interfaz de usuario al termino de cada tarea.

FacebookGoogle BookmarksGoogle GmailTwitterYahoo MailHotmailLinkedInShare

A parte de ser una buena herramienta MS Excel, permite a sus usuarios programar rutinas utilizando VBA. Si quieres saber cómo hacer para acceder a esta opción y además ver algunos ejemplos, te recomiendo leer este post.

FacebookGoogle BookmarksGoogle GmailTwitterYahoo MailHotmailLinkedInShare

Calendario

enero 2012
L M X J V S D
« nov    
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Categorías

Comparte este artículo

  • Facebook
  • Google Bookmarks
  • Google Gmail
  • Twitter
  • Yahoo Mail
  • Hotmail
  • LinkedIn
  • Share
TIENES ALGO QUE PREGUNTAR? ESCRÍBENOS AQUÍ

Copyright © 2012 - Programando por diversion

Subir