2016-07-23 24 views
0

Ich verwende C# Interop, um einen Wortbericht zu generieren. Ich versuche, eine Reihe von Tabellen zu generieren, die mit Daten aus der DB gefüllt sind. Auf die Tabellen sollte ein Text folgen, der die Daten in den Tabellen beschreibt. Das Layout, die erforderlich ist, ist wie folgt:Generierung von Text direkt nach dem Ende einer Tabelle

Required Layout

Der Bericht auf einer Vorlage basiert und die Tabellen und die entsprechenden Details sind auf einem Lesezeichen erzeugt basiert, die in die Vorlage eingefügt wird. Das Problem ist, dass wenn ich versuche, den Text nach der Tabelle zu füllen, der Text am Anfang der nächsten Seite eingefügt wird. Unten ist das Code-Snippet, das ich verwende, um die Tabellen zu füllen.

foreach (var obj in list) 
{ 
    Table vulTable = detailsRange.Tables.Add(detailsRange, 1, 2, ref oMissing, ref oMissing); 
    vulTable.PreferredWidthType = WdPreferredWidthType.wdPreferredWidthPercent; 
    vulTable.Range.InsertBefore("Text");     
    vulTable.Range.Font.Size = 12; 

    vulTable.Borders.InsideLineStyle = WdLineStyle.wdLineStyleSingle; 
    vulTable.Borders.OutsideLineStyle = WdLineStyle.wdLineStyleSingle;   

    Row r1 = vulTable.Rows.Add(ref oMissing); 
    //Table generation logic to generate other rows 

    detailsRange.InsertBreak(WdBreakType.wdColumnBreak); 
    object strt = vulTable.Range.End; 
    Range r = doc.Range(ref strt, ref strt); 

    Paragraph p = r.Paragraphs.Add(ref oMissing); 
    p.Range.InsertAfter("Details ABCD"); 
    p.Range.InsertBreak(WdBreakType.wdColumnBreak); 
    p.Range.Bold = 1; 
    p.Range.Underline = WdUnderline.wdUnderlineSingle; 
    p.Range.InsertParagraphAfter(); 
} 

Als Ergebnis des obigen Codes, der „Details ABCD“ Text am Anfang der nächsten Seite wird immer und nicht als Fortsetzung der Tabelle aufgefüllt. Welche Änderungen oder andere Vorgehensweisen sollten vorgenommen werden, außer dass das Ende des aktuellen Bereichs verwendet wird, um den Detailteil einzufügen? Jede Hilfe wird sehr geschätzt.

+1

Warum sind Sie zwei wdColumnBreak Typ Breaks eingefügt? Vielleicht wollten Sie zwei Unterbrechungen vom Typ Continuous einfügen? (Obwohl ich nicht weiß, warum du sie auch haben willst.) –

Antwort

1

ColumnBreak ist eine neue Seite in einem einspaltigen Dokument.

Aus Ihrer obigen Beschreibung sollte es in Ihrem Programm überhaupt keine Unterbrechungen geben.

(Ähm, nicht zu verwechseln mit html .br, nur für den Fall Sie waren ... :-)