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.
Artículos similares
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