簡體   English   中英

C#docx書簽循環

[英]C# docx bookmarks loop

我想通過里面的文件全部書簽迭代和設置文本從datagridview的單元格的值每bookmark.Name它已經加載。 我被困在這個循環中。 有什么建議嗎?

using (Novacode.DocX document = DocX.Load(template))
{
    foreach (Novacode.Bookmark bookmark in document.Bookmarks)
    {
        //MessageBox.Show("\tFound bookmarks {0}", bookmark.Name);
        //var bookmarks = bookmark.Name;

        //document.Bookmarks[bookmark.Name].SetText(dataGridViewRow.Cells[0].Value.ToString());

        int i = document.Bookmarks.Count;

        var bookmarks = document.Bookmarks[i].Name;

        document.Bookmarks[bookmark.Name].SetText(dataGridViewRow.Cells[0].Value.ToString());
        document.Bookmarks[0].SetText(dataGridViewRow.Cells[1].Value.ToString());
        document.Bookmarks[1].SetText(dataGridViewRow.Cells[2].Value.ToString());
        document.Bookmarks[2].SetText(dataGridViewRow.Cells[3].Value.ToString());
        document.Bookmarks[3].SetText(dataGridViewRow.Cells[4].Value.ToString());

        //document.Bookmarks[bookmark.Name].SetText(dataGridViewRow.Cells[2].Value.ToString());
        //document.Bookmarks[bookmark.Name].SetText(dataGridViewRow.Cells[3].Value.ToString());
        //document.Bookmarks[bookmark.Name].SetText(dataGridViewRow.Cells[4].Value.ToString());
        //document.Bookmarks[bookmark.Name].SetText(dataGridViewRow.Cells[5].Value.ToString());
        //document.Bookmarks[bookmark.Name].SetText(dataGridViewRow.Cells[6].Value.ToString());
        //document.Bookmarks[bookmark.Name].SetText(dataGridViewRow.Cells[7].Value.ToString());
        //document.Bookmarks[bookmark.Name].SetText(dataGridViewRow.Cells[8].Value.ToString());
        //document.Bookmarks[bookmark.Name].SetText(dataGridViewRow.Cells[9].Value.ToString());
        //document.Bookmarks[bookmark.Name].SetText(dataGridViewRow.Cells[10].Value.ToString());
        //document.Bookmarks[bookmark.Name].SetText(dataGridViewRow.Cells[11].Value.ToString());
    }                   
    document.SaveAs(path2);
}

如果我理解正確,那么您將嘗試通過循環來實現:

using (Novacode.DocX document = DocX.Load(template))
{
int i = 0;

foreach (Novacode.Bookmark bookmark in document.Bookmarks)
{
    var bookmarks = document.Bookmarks[i].Name;

    document.Bookmarks[bookmark.Name].SetText(dataGridViewRow.Cells[i+1].Value.ToString());

    i++;
}                   
document.SaveAs(path2);
}

我們在這里所做的事情被聲明為變量i ,該變量位於循環外部,但是每次foreach迭代都會增加其值。 或者,您可以重寫循環,而使用for循環:

for(int i=0; i< document.Bookmarks.Count)
{
       //change the code here accordingly
}

讓我知道是否有幫助。 謝謝。

暫無
暫無

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

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