Realizar fusión horizontal o fusión vertical de una o más celdas de tabla en archivos DOCS/DOCX. FileFormat.Words proporciona métodos para funcionar con tablas en archivos de Word.

Cómo fusionar las celdas de la tabla en documentos de Word

Descripción general

La versión más nueva de [FileFormat.Words] 2 ofrece más métodos para trabajar con tablas en [Word] 3 documentos. La anterior [versión] 4 contiene métodos para crear, editar y leer las propiedades de la tabla, mientras que la última versión permite a los usuarios fusionar programáticamente las celdas de tabla en archivos DOCS/DOCX. Además, puede hacer fusión horizontal o fusión vertical de celdas de tabla utilizando este .NET de código abierto [biblioteca] 5. Además, es una biblioteca fácil de usar cuyos métodos no son complejos y no necesitan ninguna dependencia de terceros. En esta publicación de blog, aprenderemos cómo fusionar las celdas de la mesa en documentos de Word. Entonces, comencemos el proceso de instalación y comencemos a escribir el código fuente. Cubriremos los siguientes encabezados en este artículo:

  • [Instalación de la API del generador de tabla] 6
  • [Cómo fusionar las celdas de la tabla en documentos de Word] 7

Instalación de la API del generador de tabla

Visite este [enlace] 8 para obtener información detallada sobre la instalación. Solo para volver a capacitar, el proceso de instalación de esta API .NET gratuita es relativamente fácil. Bueno, puede descargar el [paquete nuget] 9 o ejecutar el siguiente comando en el administrador del paquete nuget:

Install-Package FileFormat.Words

Cómo fusionar las celdas de la tabla en documentos de Word

Escribiremos un fragmento de código para lograr la fusión horizontal y la fusión vertical de las células de la tabla. Para ese propósito, utilizaremos las clases y métodos expuestos. Visite esta guía para aprender a crear una tabla en un documento de Word usando FileFormat.Words. Entonces, utilizaremos más clases y métodos en nuestro fragmento de código:

  • Crear un objeto de la clase [VerticalMerge] 10.
  • [La propiedad MergerStart] 11 se utiliza para especificar que el elemento iniciará una nueva región fusionada verticalmente en la tabla.
  • Invocar el método [append] 12 para adjuntar el objeto VerticalMerge con el objeto TblCellProps.
  • Instanciar una instancia de la clase [Horizontalmerge] 13.
  • [La propiedad MergerStart] 14 se utiliza para especificar que el elemento iniciará una nueva región fusionada horizontalmente en la tabla.
  • Llame al método [append] 15 para adjuntar el objeto horizontalmerge con el objeto TblCellProps.
  • [La propiedad MergeContinue] 16 se utiliza para especificar que el elemento finalice una región fusionada horizontalmente en la tabla.
  • [La propiedad MergeContinue] 17 se utiliza para especificar que el elemento finalizará una región fusionada verticalmente en la tabla.
using FileFormat.Words;
using FileFormat.Words.Table;
namespace Example
{
    class Program
    {
        static void Main(string[] args)
        {
            // Initialize an instance of the Document class.
            using (Document doc = new Document())
            {
                // Instantiate the constructor of the Body class with the Document class object.
                Body body = new Body(doc);
                // Create an object of the Table class.
                Table table = new Table();
                // Initialize the constructor of the TopBorder class to set the border of the top side of the table.
                TopBorder topBorder = new TopBorder();
                // Invoke the basicBlackSquares_border method to set the border style and border line width.
                topBorder.basicBlackSquares_border(20);
                // To set the border of the bottom side of the table.
                BottomBorder bottomBorder = new BottomBorder();
                bottomBorder.basicBlackSquares_border(20);
                // To set the border of the right side of the table.
                RightBorder rightBorder = new RightBorder();
                rightBorder.basicBlackSquares_border(20);
                // To set the border of the left side of the table.
                LeftBorder leftBorder = new LeftBorder();
                leftBorder.basicBlackSquares_border(20);
                // To set the inside vertical border of the table.
                InsideVerticalBorder insideVerticalBorder = new InsideVerticalBorder();
                insideVerticalBorder.basicBlackSquares_border(20);
                // To set the inside vehorizontalrtical border of the table.
                InsideHorizontalBorder insideHorizontalBorder = new InsideHorizontalBorder();
                insideHorizontalBorder.basicBlackSquares_border(20);
                // Create an instance of the TableBorders class. 
                TableBorders tableBorders = new TableBorders();
                // Append the object of the TopBorder class to the object of the TableBorders class.
                tableBorders.AppendTopBorder(topBorder);
                // Append the object of the BottomBorder class.
                tableBorders.AppendBottomBorder(bottomBorder);
                // Append the object of the RightBorder class.
                tableBorders.AppendRightBorder(rightBorder);
                // Append the object of the LeftBorder class.
                tableBorders.AppendLeftBorder(leftBorder);
                // Append the object of the InsideVerticalBorder class.
                tableBorders.AppendInsideVerticalBorder(insideVerticalBorder);
                // Append the object of the InsideHorizontalBorder class.
                tableBorders.AppendInsideHorizontalBorder(insideHorizontalBorder);

                // Initialize an instance of the TableProperties class.
                TableProperties tblProp = new TableProperties();
                // Invoke the Append method to attach the object of the TableBorders class.
                tblProp.Append(tableBorders);
                // Create an instance of the TableJustification class 
                TableJustification tableJustification = new TableJustification();
                // Call the AlignLeft method to position the table on left side of the document.
                tableJustification.AlignLeft();
                // Invoke the Append method to attach the tableJustification object to the tblProp object.
                tblProp.Append(tableJustification);

                // The AppendChild method will attach the table properties to the table.
                table.AppendChild(tblProp);

                // Create an object of the TableRow class to create a table row.
                TableRow tableRow = new TableRow();
                TableRow tableRow2 = new TableRow();

                // Initialize an instance of the TableCell class.
                TableCell tableCell = new TableCell();
                Paragraph para = new Paragraph();
                Run run = new Run();

                // Set the header of the first column by invoking the TableHeaders method.
                table.TableHeaders("Name");
                run.Text = "Mustafa";
                para.AppendChild(run);
                // Call the Append method to add text inside the table cell.
                tableCell.Append(para);

                // Create an object of the TableCellProperties table properties 
                TableCellProperties tblCellProps = new TableCellProperties();

                // Set the width of table cell by initializing the object of the TableCellWidth class and append to tblCellProps object.
                tblCellProps.Append(new TableCellWidth("2400"));
                // Append method will attach the tblCellProps object with the object of the TableCell class.
                tableCell.Append(tblCellProps);

                TableCell tableCell2 = new TableCell();
                Paragraph para2 = new Paragraph();
                Run run2 = new Run();

                // set the header of the second column
                table.TableHeaders("Nationality");
                run2.Text = "Pakistani";
                para2.AppendChild(run2);
                tableCell2.Append(para2);

                TableCellProperties tblCellProps2 = new TableCellProperties();
                // Create an object of the VerticalMerge class. 
                VerticalMerge verticalMerge = new VerticalMerge();
                // MergeRestart property is used to specify that the element shall start a new vertically merged region in the table.
                verticalMerge.MergeRestart = true;
                // Invoke the Append method to attach the verticalMerge object with the tblCellProps object.
                tblCellProps.Append(verticalMerge);

                // Instantiate an instance of the HorizontalMerge class. 
                HorizontalMerge horizontalMerge = new HorizontalMerge();
                // MergeRestart property is used to specify that the element shall start a new horizontally merged region in the table.
                horizontalMerge.MergeRestart = true;
                // Call the Append method to attach the horizontalMerge object with the tblCellProps object.
                tblCellProps2.Append(horizontalMerge);

                tblCellProps2.Append(new TableCellWidth("1400"));
                tableCell2.Append(tblCellProps2);

                TableCell tableCell3 = new TableCell();
                Paragraph para3 = new Paragraph();
                Run run3 = new Run();
                table.TableHeaders("Age");
                run3.Text = "30";
                para3.AppendChild(run3);
                tableCell3.Append(para3);

                HorizontalMerge horizontalMerge1 = new HorizontalMerge();
                // MergeContinue property is used to specify that the element shall end a horizontally merged region in the table.
                horizontalMerge1.MergeContinue = true;
                TableCellProperties tblCellProps3 = new TableCellProperties();
                tblCellProps3.Append(new TableCellWidth("1400"));
                tblCellProps3.Append(horizontalMerge1);

                tableCell3.Append(tblCellProps3);
                // Call the Append method to add cells into table row.
                tableRow.Append(tableCell);
                tableRow.Append(tableCell2);
                tableRow.Append(tableCell3);

                // create table cell
                TableCell _tableCell = new TableCell();
                Paragraph _para = new Paragraph();
                Run _run = new Run();

                _run.Text = "sultan";
                _para.AppendChild(_run);
                _tableCell.Append(_para);

                TableCellProperties tblCellProps1_ = new TableCellProperties();
                VerticalMerge verticalMerge2 = new VerticalMerge();
                // MergeContinue property is used to specify that the element shall end a vertically merged region in the table.
                verticalMerge2.MergeContinue = true;
                tblCellProps1_.Append(verticalMerge2);
                tblCellProps1_.Append(new TableCellWidth("2400"));
                _tableCell.Append(tblCellProps1_);


                TableCell _tableCell2 = new TableCell();
                Paragraph _para2 = new Paragraph();
                Run _run2 = new Run();

                _run2.Text = "British";
                _para2.AppendChild(_run2);
                _tableCell2.Append(_para2);

                TableCellProperties tblCellProps2_ = new TableCellProperties();
                tblCellProps2_.Append(new TableCellWidth("1400"));
                _tableCell2.Append(tblCellProps2_);

                TableCell _tableCell3 = new TableCell();
                Paragraph _para3 = new Paragraph();
                Run _run3 = new Run();

                _run3.Text = "2";
                _para3.AppendChild(_run3);
                _tableCell3.Append(_para3);

                TableCellProperties tblCellProps3_ = new TableCellProperties();
                tblCellProps3_.Append(new TableCellWidth("1400"));
                _tableCell3.Append(tblCellProps3_);

                tableRow2.Append(_tableCell);
                tableRow2.Append(_tableCell2);
                tableRow2.Append(_tableCell3);
                // Call the Append method to add the rows into table.
                table.Append(tableRow);
                table.Append(tableRow2);
                // The AppendChild method will add the table to the body of the document.
                body.AppendChild(table);
                // The Save method will save the Word document onto the disk.
                doc.Save("/Users/Mustafa/Desktop/Docs.docx");
            }

        }

    }
}

Copie y pegue el segmento de código anterior en su archivo principal y ejecute. Verá el archivo de Word generado con el contenido que se muestra en la imagen a continuación:

Fusionar células de mesa

Conclusión

Estamos terminando esta publicación de blog aquí con la esperanza de que haya aprendido cómo Fusionar celdas de mesa en Word Documentos programáticamente. Además, también hemos escrito el código fuente para implementar la fusión horizontal y la fusión vertical de las células de la tabla. Por lo tanto, puede optar por esta API del generador de tabla .NET de código abierto para automatizar la automatización de archivos de Word. Al final, no olvide visitar la [documentación] 19 para aprender sobre más clases y métodos. Finalmente, [fileFormat.com] 20 está escribiendo constantemente publicaciones de blog de tutoriales sobre temas interesantes. Entonces, manténgase en contacto para actualizaciones regulares. Además, puede seguirnos en nuestras plataformas de redes sociales, incluidas [Facebook] 21, [LinkedIn] 22 y [Twitter] 23.

Contribuir

Dado que [FileFormat.Words para .NET] 5 es un proyecto de código abierto y está disponible en [GitHub] 24. Entonces, la contribución de la comunidad es muy apreciada.

Haga una pregunta

Puede informarnos sobre sus preguntas o consultas en nuestro [Foro] 25.

Preguntas frecuentes

¿Cómo fusiono las celdas en un documento de Word? Puede fusionar las células de tabla usando [verticalmerge] 10 y [horizontalmerge] 13 clases. ¿Cómo fusiono las células en una tabla en DOC? Siga este [enlace] 7 para aprender los pasos y el fragmento de código para lograr esta funcionalidad.

Ver también

  • [Cómo crear un documento de Word en C# usando FileFormat.Words] 8
  • [Cómo editar un documento de Word en C# usando FileFormat.Words] 26
  • [Cómo hacer una tabla en archivos de Word usando FileFormat.Words] 27