Gestire righe e colonne nelle tabelle PowerPoint in .NET

Introduzione

Per consentirti di gestire le righe e le colonne di una tabella in una presentazione PowerPoint, Aspose.Slides fornisce la classe Table, l’interfaccia ITable e molti altri tipi.

Imposta la prima riga come intestazione

  1. Crea un’istanza della classe Presentation e carica la presentazione.
  2. Ottieni il riferimento a una diapositiva tramite il suo indice.
  3. Crea un oggetto ITable e impostalo a null.
  4. Itera su tutti gli oggetti IShape per trovare la tabella pertinente.
  5. Imposta la prima riga della tabella come intestazione.

Questo codice C# mostra come impostare la prima riga di una tabella come intestazione:

// Istanzia la classe Presentation
Presentation pres = new Presentation("table.pptx");

// Accede alla prima diapositiva
ISlide sld = pres.Slides[0];

// Inizializza la TableEx nulla
ITable tbl = null;

// Itera attraverso le forme e imposta un riferimento alla tabella
foreach (IShape shp in sld.Shapes)
{
    if (shp is ITable)
    {
        tbl = (ITable)shp;
    }
}

// Imposta la prima riga di una tabella come intestazione
tbl.FirstRow = true;

// Salva la presentazione su disco
pres.Save("First_row_header.pptx", SaveFormat.Pptx);

Clona una riga o colonna di una tabella

  1. Crea un’istanza della classe Presentation e carica la presentazione,
  2. Ottieni il riferimento a una diapositiva tramite il suo indice.
  3. Definisci un array di columnWidth.
  4. Definisci un array di rowHeight.
  5. Aggiungi un oggetto ITable alla diapositiva tramite il metodo AddTable.
  6. Clona la riga della tabella.
  7. Clona la colonna della tabella.
  8. Salva la presentazione modificata.

Questo codice C# mostra come clonare una riga o colonna di una tabella PowerPoint:

 // Istanzia la classe Presentation
using (Presentation presentation = new Presentation("Test.pptx"))
{
    // Accede alla prima diapositiva
    ISlide sld = presentation.Slides[0];

    // Definisce le colonne con larghezze e le righe con altezze
    double[] dblCols = { 50, 50, 50 };
    double[] dblRows = { 50, 30, 30, 30, 30 };

    // Aggiunge una forma di tabella alla diapositiva
    ITable table = sld.Shapes.AddTable(100, 50, dblCols, dblRows);

    // Aggiunge del testo alla cella 1 della riga 1
    table[0, 0].TextFrame.Text = "Row 1 Cell 1";

    // Aggiunge del testo alla cella 2 della riga 1
    table[1, 0].TextFrame.Text = "Row 1 Cell 2";

    // Clona la riga 1 alla fine della tabella
    table.Rows.AddClone(table.Rows[0], false);

    // Aggiunge del testo alla cella 1 della riga 2
    table[0, 1].TextFrame.Text = "Row 2 Cell 1";

    // Aggiunge del testo alla cella 2 della riga 2
    table[1, 1].TextFrame.Text = "Row 2 Cell 2";

    // Clona la riga 2 come quarta riga della tabella
    table.Rows.InsertClone(3,table.Rows[1], false);

    // Clona la prima colonna alla fine
    table.Columns.AddClone(table.Columns[0], false);

    // Clona la seconda colonna all'indice della quarta colonna
    table.Columns.InsertClone(3,table.Columns[1], false);
    
    // Salva la presentazione su disco 
    presentation.Save("table_out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
}

Rimuovi una riga o colonna da una tabella

  1. Crea un’istanza della classe Presentation e carica la presentazione,
  2. Ottieni il riferimento a una diapositiva tramite il suo indice.
  3. Definisci un array di columnWidth.
  4. Definisci un array di rowHeight.
  5. Aggiungi un oggetto ITable alla diapositiva tramite il metodo AddTable.
  6. Rimuovi la riga della tabella.
  7. Rimuovi la colonna della tabella.
  8. Salva la presentazione modificata.

Questo codice C# mostra come rimuovere una riga o colonna da una tabella:

Presentation pres = new Presentation();

ISlide slide = pres.Slides[0];
double[] colWidth = { 100, 50, 30 };
double[] rowHeight = { 30, 50, 30 };

ITable table = slide.Shapes.AddTable(100, 100, colWidth, rowHeight);
table.Rows.RemoveAt(1, false);
table.Columns.RemoveAt(1, false);
pres.Save("TestTable_out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);

Imposta la formattazione del testo a livello di riga della tabella

  1. Crea un’istanza della classe Presentation e carica la presentazione,
  2. Ottieni il riferimento a una diapositiva tramite il suo indice.
  3. Accedi all’oggetto ITable pertinente dalla diapositiva.
  4. Imposta la proprietà FontHeight delle celle della prima riga.
  5. Imposta le proprietà Alignment e MarginRight delle celle della prima riga.
  6. Imposta la proprietà TextVerticalType delle celle della seconda riga.
  7. Salva la presentazione modificata.

Questo codice C# dimostra l’operazione.

// Crea un'istanza della classe Presentation
Presentation presentation = new Presentation();
           
ISlide slide = presentation.Slides[0];

ITable someTable = presentation.Slides[0].Shapes[0] as ITable; // Supponiamo che la prima forma sulla prima diapositiva sia una tabella

// Imposta l'altezza del carattere delle celle della prima riga
PortionFormat portionFormat = new PortionFormat();
portionFormat.FontHeight = 25;
someTable.Rows[0].SetTextFormat(portionFormat);

// Imposta l'allineamento del testo e il margine destro delle celle della prima riga
ParagraphFormat paragraphFormat = new ParagraphFormat();
paragraphFormat.Alignment = TextAlignment.Right;
paragraphFormat.MarginRight = 20;
someTable.Rows[0].SetTextFormat(paragraphFormat);

// Imposta il tipo di orientamento verticale del testo delle celle della seconda riga
TextFrameFormat textFrameFormat = new TextFrameFormat();
textFrameFormat.TextVerticalType = TextVerticalType.Vertical;
someTable.Rows[1].SetTextFormat(textFrameFormat);

// Salva la presentazione su disco
presentation.Save("result.pptx", Aspose.Slides.Export.SaveFormat.Pptx);

Imposta la formattazione del testo a livello di colonna della tabella

  1. Crea un’istanza della classe Presentation e carica la presentazione,
  2. Ottieni il riferimento a una diapositiva tramite il suo indice.
  3. Accedi all’oggetto ITable pertinente dalla diapositiva.
  4. Imposta la proprietà FontHeight delle celle della prima colonna.
  5. Imposta le proprietà Alignment e MarginRight delle celle della prima colonna.
  6. Imposta la proprietà TextVerticalType delle celle della seconda colonna.
  7. Salva la presentazione modificata.

Questo codice C# dimostra l’operazione:

// Crea un'istanza della classe Presentation
Presentation pres = new Presentation();
           
ISlide slide = pres.Slides[0];

ITable someTable = pres.Slides[0].Shapes[0] as ITable; // Supponiamo che la prima forma sulla prima diapositiva sia una tabella

// Imposta l'altezza del carattere delle celle della prima colonna
PortionFormat portionFormat = new PortionFormat();
portionFormat.FontHeight = 25;
someTable.Columns[0].SetTextFormat(portionFormat);

// Imposta l'allineamento del testo e il margine destro delle celle della prima colonna in una chiamata
ParagraphFormat paragraphFormat = new ParagraphFormat();
paragraphFormat.Alignment = TextAlignment.Right;
paragraphFormat.MarginRight = 20;
someTable.Columns[0].SetTextFormat(paragraphFormat);

// Imposta il tipo di orientamento verticale del testo delle celle della seconda colonna
TextFrameFormat textFrameFormat = new TextFrameFormat();
textFrameFormat.TextVerticalType = TextVerticalType.Vertical;
someTable.Columns[1].SetTextFormat(textFrameFormat);

// Salva la presentazione su disco
pres.Save("result.pptx", Aspose.Slides.Export.SaveFormat.Pptx);

Recupera le proprietà di stile della tabella

Aspose.Slides consente di recuperare le proprietà di stile di una tabella in modo da poter utilizzare tali dettagli per un’altra tabella o in altro contesto. Questo codice C# mostra come ottenere le proprietà di stile da uno stile predefinito di una tabella:

using (Presentation pres = new Presentation())
{
    ITable table = pres.Slides[0].Shapes.AddTable(10, 10, new double[] { 100, 150 }, new double[] { 5, 5, 5 });
    table.StylePreset = TableStylePreset.DarkStyle1; // cambia il tema predefinito dello stile preimpostato
    pres.Save("table.pptx", SaveFormat.Pptx);
}

FAQ

Posso applicare temi/stili di PowerPoint a una tabella già creata?

Sì. La tabella eredita il tema della diapositiva/layout/master e puoi comunque sovrascrivere riempimenti, bordi e colori del testo sopra quel tema.

Posso ordinare le righe della tabella come in Excel?

No, le tabelle di Aspose.Slides non hanno ordinamento o filtri integrati. Ordina i dati in memoria prima, quindi ricrea le righe della tabella in quell’ordine.

Posso avere colonne a bande (a strisce) mantenendo colori personalizzati su celle specifiche?

Sì. Attiva le colonne a bande, quindi sovrascrivi le celle specifiche con una formattazione locale; la formattazione a livello di cella ha precedenza sullo stile della tabella.