簡體   English   中英

C#word automation:檢測表行是否會導致新頁面

[英]C# word automation: detect if table row will cause a new page

在我的應用程序中,我創建了一個包含多個段落的word文 其中一個是一個可能足夠大的表,可以在文檔的第二頁或第三頁上展開。 這是我的表的創建代碼:

Table oTable;
Range wrdRng = aDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
wrdRng.Bold = 0;
wrdRng.Font.Size = 9;
int inTableRows = dtRechPos.Rows.Count + 2;
oTable = aDoc.Tables.Add(wrdRng, inTableRows, 4, ref oMissing, ref oMissing);
oTable.Range.ParagraphFormat.SpaceAfter = 2;
oTable.Cell(1, 1).Range.Text = "Name, Anschrift";
oTable.Cell(1, 2).Range.Text = "Geb. Datum";
oTable.Cell(1, 3).Range.Text = "Versich. Nr.";
oTable.Cell(1, 4).Range.Text = "Betrag";
oTable.Rows[1].Range.Font.Bold = 1;
oTable.Rows[1].Borders.OutsideLineStyle = WdLineStyle.wdLineStyleSingle;
oTable.Rows[1].Borders.OutsideLineWidth = WdLineWidth.wdLineWidth050pt;

int curRow = 1;

String sqlMwstProzent = "SELECT PROZENT FROM MWST WHERE MWSTID = " + inMwstId;
decimal mwstProzent = (decimal)DB.execScalar(sqlMwstProzent);
String curWährung = Settings.getGlobVarStr("Währung") == String.Empty ? CRechnung.STD_WÄHRUNG : Settings.getGlobVarStr("Währung");

foreach (System.Data.DataRow drPos in dtRechPos.Rows)
{
    curRow += 1; 

    if (drPos["TEXT"].ToString().Equals(CRechnung.KK_TEXT_MONATL))
    {
        oTable.Cell(curRow, 1).Range.Text = String.Format("{0}, {1}\v{2}\v{3} {4}",
        drPos["NAME"], drPos["VORNAME"], drPos["STRASSE"], drPos["PLZ"], drPos["ORT"]);
        oTable.Cell(curRow, 2).Range.Text = String.Format("{0}", ((DateTime)drPos["GEBDATUM"]).ToShortDateString());
        oTable.Cell(curRow, 3).Range.Text = drPos["VERSICHNR"].ToString();
        oTable.Cell(curRow, 4).Range.Text = String.Format("{0:0.00} {1}", drPos["BRUTTO"], curWährung);                        
    }
    else if (drPos["TEXT"].ToString().Equals(CRechnung.KK_TEXT_EINMAL))
    {
        oTable.Cell(curRow - 1, 2).Range.Text += String.Format("{0}", CRechnung.KK_TEXT_EINMAL);
        oTable.Cell(curRow - 1, 4).Range.Text += String.Format("{0:0.00} {1}", drPos["BRUTTO"], curWährung);
    }
    else
    {
        oTable.Cell(curRow, 1).Merge(oTable.Cell(curRow, 3));
        oTable.Cell(curRow, 1).Range.Text = String.Format("{0} x {1} {2}", drPos["ANZAHL"], drPos["TEXT"], curWährung);
        oTable.Cell(curRow, 2).Range.Text = String.Format("{0:0.00} {1}", drPos["BRUTTOSUMME"], curWährung);                        
    }                                       
}

現在我想找到一種方法來檢測是否會到達新頁面。 如果是這樣,我想添加“繼續第2頁”之類的內容。 那可能嗎?

是否允許只檢查頁面長度,如果Pages.Count == 2然后添加文本或事后的其他內容?

在foreach塊之外,有一個跟蹤當前頁面計數的變量。 在foreach塊中,創建行,然后檢查頁面計數。 如果newPageCount> oldPageCount則執行一些代碼以插入延續消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM