簡體   English   中英

Word OpenXML刪除表內的填充

[英]Word OpenXML remove padding inside table

我正在使用單詞開放XML。

rowCopy.Descendants<TableCell>().ElementAt(0).Append(new Paragraph(new Run(new Text(dr["NAME"].ToString()))));

關於代碼是將名稱寫入表中的單元格。 但這會在單元內部創建頂部和底部填充。 我該如何刪除它。 是因為新的段落? 我不熟悉開放XML。

在此處輸入圖片說明

[![在此處輸入圖片描述] [2]] [2]

如果您現有的Docx文件中有一個空表,則可能會發現每個Cell中都有一個空的Paragraph 通過使用Append您可以在空的Paragraph后面添加新的Paragraph ,這將在單元格的頂部導致一個看起來像填充的空格。

假設您只需要在Cell中輸入新文本,則可以通過在Cell (或Table如果您確定不需要在Table )上調用RemoveAllChildren來刪除任何現有的Paragraph元素, 然后再添加新的Paragraph

TableCell cell = body.Descendants<TableCell>().ElementAt(0);
cell.RemoveAllChildren<Paragraph>();
cell.Append(new Paragraph(new Run(new Text(dr["NAME"].ToString()))));

如果這不是問題,那么您可以通過編輯TableCellMargin來控制填充。 類似於以下內容的東西應該起作用:

if (cell.TableCellProperties != null && cell.TableCellProperties.TableCellMargin != null)
{
    cell.TableCellProperties.TableCellMargin.BottomMargin = new BottomMargin() { Width = "0" };
    cell.TableCellProperties.TableCellMargin.TopMargin = new TopMargin() { Width = "0" };
}

編輯

完整的代碼清單如下所示:

static void AddDataToTable(string filename)
{
    using (WordprocessingDocument wordDoc =
            WordprocessingDocument.Open(filename, true))
    {
        var body = wordDoc.MainDocumentPart.Document.Body;
        var paras = body.Elements<TableCell>();

        TableCell cell = body.Descendants<TableCell>().ElementAt(0);
        cell.RemoveAllChildren<Paragraph>();
        cell.Append(new Paragraph(new Run(new Text(dr["NAME"].ToString()))));

        if (cell.TableCellProperties != null && cell.TableCellProperties.TableCellMargin != null)
        {
            cell.TableCellProperties.TableCellMargin.BottomMargin = new BottomMargin() { Width = "0" };
            cell.TableCellProperties.TableCellMargin.TopMargin = new TopMargin() { Width = "0" };
        }

        wordDoc.Close(); // close the template file
    }
}

暫無
暫無

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

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