2011-02-23 12 views
5

Sto creando un documento Word al volo come un progetto di Word Office C# VS 2010 per un cliente che vuole essere in grado di generare un documento che consenta il numero appropriato di posizioni di firmatari per un affare particolare che va giù. C'è una tabella che dovrà essere generata con righe sufficienti e poi più avanti nel documento devo produrre blocchi prefabbricati per informazioni personali per firmatario.Come si ottiene il testo in una tabella di Word per l'allineamento verticale?

Attualmente sto lavorando alla parte del tavolo e ho quasi tutto come lo desidero, ma il testo in tutte le celle è allineato verticalmente in alto. Ho visitato TUTTI i siti internet INTERNI negli ultimi giorni per avere informazioni aggiornate sull'automazione di Word che è corrente per .Net 4, VS 2010 e Office 2010. Ho una sintassi che compila senza errori ma non riesce a fondo allineato come desidero. Ho persino pugnalato con IntelliSense per vedere se potevo trovare un'altra soluzione.

Questo codice si concentra su una singola riga:
tbl.Range.Rows [1] = .Cells.VerticalAlignment Word.WdCellVerticalAlignment.wdCellAlignVerticalBottom; Viene eseguito ma il testo rimane pieno di elio.

Qualsiasi procedura guidata di automazione di Word è disponibile?

+2

+1 per "riempito di elio". –

+1

Altri fattori potrebbero far sembrare che questo non funzioni. Ad esempio, controllare l'altezza della riga (Strumenti tabella | Layout | Tabella | Proprietà, scheda Riga). Se l'altezza Specifica non è sufficientemente grande, l'allineamento verticale sembrerà non funzionare. Prova la scheda Cella, Opzioni e Margini delle celle. Provare a fare manualmente in Word ciò che si vuole realizzare e vedere se non funziona ancora. – ForEachLoop

risposta

3

Non è stato possibile riprodurre il problema. Questo codice funziona bene:

using Microsoft.Office.Interop.Word; 
class Program 
{ 
    static void Main(string[] args) 
    { 
     DocumentClass document = new DocumentClass(); 
     object defaultTableBehavior = null, autoFitBehavior = null; 
     Table tbl = document.Content.Tables.Add(document.Content, 2, 2, ref defaultTableBehavior, 
      ref autoFitBehavior); 
     tbl.Rows[2].Cells[2].Range.InsertAfter("This is a test."); 
     tbl.Rows[2].Cells[2].Range.ParagraphFormat.SpaceAfter = 0f; 
     tbl.Rows[2].Cells.Height = 50f; 
     tbl.Range.Rows[2].Cells.VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalBottom; 
    } 
} 

Ho il sospetto che qualche altro problema deve essere in gioco, come la spaziatura tra i paragrafi dopo, o forse è selezionata la gamma sbagliata?

2

Questo è per una vecchia domanda, ma mi sono imbattuto nello stesso problema e una soluzione per questo. Aggiungi questo al vostro tavolo:

tbl.Range.ParagraphFormat.SpaceAfter = 1; // change the 1 to how much space you want extra in your cell 
4

Il testo è probabilmente centrato verticalmente, ma incudes un paragrafo spaziatura diversa da "0" Word visualizza la riga aggiuntiva come testo aggiuntivo che deve essere incluso nel centraggio verticale.

Per aggirare il problema, è sufficiente evidenziare il testo che si desidera centrare verticalmente (o l'intera tabella se è ciò che si desidera). Quindi andare su "Layout di pagina" e ridurre "Spaziatura" "Da" a "0". Se si dispone anche di uno spazio nella parte superiore del testo, sarà necessario ridurre "Spaziatura" "Prima" a "0". Senza spaziatura prima o dopo il testo, il testo attuale sarà ora centrato.

-1

Quanto segue ha funzionato per me in Word 2011 per Mac. Niente altro suggerito in numerosi siti sembrava cambiare l'allineamento verticale della cella per me. Trovato per prove ed errori. Ho evidenziato le celle che volevo allineare verticalmente in basso a destra e ho cambiato l'interlinea (nel mio caso era 1.5 per il tavolo) a 1 per quelle celle. Finalmente ha funzionato. Spero che sia d'aiuto.

1

Proprio se qualcuno sta seguendo questo post, anche il mio testo è stato disposto nella parte superiore delle celle. Quindi per me la seguente ha fatto quello che mi serviva in modo qick

oTable.Range.ParagraphFormat.SpaceAfter = 6; 
oTable.Range.ParagraphFormat.SpaceBefore = 6; 

spazio può essere regolato, se necessario.

-2

Evidenzia il testo all'interno della tabella -> vai a Opzioni intervallo di riga -> nella sezione Spaziatura Prima/Dopo imposta Prima e Dopo a zero px (o uguale).

Ora tutte le opzioni di allineamento dovrebbero funzionare.

Problemi correlati