gpt4 book ai didi

c# - 使用 OpenXml 在现有的 word 文档中动态地向表中添加行

转载 作者:行者123 更新时间:2023-12-05 08:33:11 25 4
gpt4 key购买 nike

我正在使用 OpenXml 处理 word 文档。现在我的 word 文档 (docx) 宽度标题中有两个表格,现在我需要向这些表格添加动态行。

最佳答案

好的,这应该能帮到你。我确信还有其他方法可以将行添加到现有表中,但这是我使用的方法。

在此示例中,我假设您的表格标题正好是 1 行。在这个例子中,我在 Word 表格中放置了一个名为“表格”的书签。在表格中的哪个位置并不重要,因为我正在通过 Parent 进行挖掘,直到我到达表格。

我原来的word文档: picture of table before processing

带有注释解释的代码:

//setup
using (var wordDoc = WordprocessingDocument.Open(@"C:\test\cb\exptable.docx", true))
{
MainDocumentPart mainPart = wordDoc.MainDocumentPart;
var document = mainPart.Document;
var bookmarks = document.Body.Descendants<BookmarkStart>();

//find bookmark
var myBookmark = bookmarks.First(bms => bms.Name == "table");
//dig through parent until we hit a table
var digForTable = myBookmark.Parent;
while(!(digForTable is Table))
{
digForTable = digForTable.Parent;
}
//get rows
var rows = digForTable.Descendants<TableRow>().ToList();
//remember you have a header, so keep row 1, clone row 2 (our template for dynamic entry)
var myRow = (TableRow)rows.Last().Clone();
//remove it after cloning.
rows.Last().Remove();
//do stuf with your row and insert it in the table
for (int i = 0; i < 10; i++)
{
//clone our "reference row"
var rowToInsert = (TableRow)myRow.Clone();
//get list of cells
var listOfCellsInRow = rowToInsert.Descendants<TableCell>().ToList();
//just replace every bit of text in cells with row-number for this example
foreach(TableCell cell in listOfCellsInRow)
{
cell.Descendants<Text>().FirstOrDefault().Text = i.ToString();
}
//add new row to table, after last row in table
digForTable.Descendants<TableRow>().Last().InsertAfterSelf(rowToInsert);
}
}

运行代码后的文档: enter image description here

这应该可以解决问题。

关于c# - 使用 OpenXml 在现有的 word 文档中动态地向表中添加行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43626720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com