我正在使用word open XML。
rowCopy.Descendants<TableCell>().ElementAt(0).Append(new Paragraph(new Run(new Text(dr["NAME"].ToString()))));
about代码是将名称写入表中的单元格。但它正在细胞内部创建顶部和底部填充。我该如何删除它。是因为新的段落?我是开源XML的新手。
[![在此处输入图像说明] [2]] [2]
答案 0 :(得分:1)
如果您的现有Docx文件中包含空表,则可能会发现每个Paragraph
中都有一个空的Cell
。通过使用Append
,您将在空的Paragraph
之后添加新的Cell
,这会在单元格顶部产生一个看起来像填充的空格。
鉴于您只需要Paragraph
中的新文字,您可以在添加新的Paragraph
之前删除所有现有的RemoveAllChildren
元素,方法是调用{{ 1}}在Cell
上(或Table
,如果您确信自己不需要Table
):
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
}
}