admito, soy muy nuevo en el uso de las bibliotecas de interoperabilidad, pero la gente consejo siempre parecen dar es, grabar una macro y revisar el código VBA. El problema es que la macro no registra exactamente lo que estoy haciendo: hacer clic en un estilo rápido para aplicarlo a la selección actual.Cómo aplicar un estilo rápido de Word en C#, no solo el formato simple sino todo el estilo?
Mi tarea es bastante simple: que necesito para aplicar un estilo rápido a un párrafo (Microsoft.Office.Interop.Word.Paragraph). Usando el comando set_style sin embargo, sólo se aplica el formato básico, y el párrafo mantiene la selección de estilos rápidos originales ( normal).
Usando el enfoque de Remou me funcionó, pero parece muy similar a mi propio código, y no puedo hacerlo funcionar, y creo que podría ser mi comprensión del modelo de objeto un poco desajustada.
public void AddParagraph(string text, string styleName = null)
{
Paragraph paragraph = _document.Content.Paragraphs.Add();
if (styleName != null)
{
paragraph.Range.set_Style(_document.Styles[styleName]);
}
paragraph.Range.Text = text;
paragraph.Range.InsertParagraphAfter();
}
Lo llamo con p. Ej. AddParagraph("A title", "Heading 1");
, pero el resultado de utilizar el contenedor anterior para compilar mi documento es que no se aplican estilos completos, solo fuente, color, tamaño y negrita/cursiva.
Estoy usando mi propio archivo .dotx
, con mis propios estilos definidos y nombrados, pero simplemente copiar el código de Remou funciona con mi propia plantilla, así que no creo que ese sea el problema, y usando ese código no puedo para averiguar cómo agregar múltiples párrafos con cada uno su propio estilo.
Puede alguien señalar lo que está mal con mi enfoque, o al menos cómo puedo hacer que la respuesta proporcionada por el trabajo Remou para mis necesidades? :)
Gracias Remou, he actualizado mi pregunta, y cuando me un poco más cerca, pero no todo el camino. Probablemente voy por esto de una manera incorrecta. –
... Estoy estupefacto. Cambiar el orden de aplicar estilo y texto es lo que hizo, la parte '+ paragraph.Range.Text;' era algo viejo que intenté y copié por error. ¡Gracias por tu ayuda! :) –