无需word即可获取.docx中的所有内容控件
Get all content controls in .docx without word
我要获取一个Word文档中的所有内容控件并插入信息,但是程序所在的PC运行不需要安装Word
我试过:
List<SdtContentText> lista = parteDocumento.Document.Descendants<SdtContentText>().ToList();
foreach (SdtContentText objeto in lista)
并将 SdtContentText 更改为 SdtBlock
编辑:
现在我可以获得 ContentControls 但我无法编辑它们的 innerText
List <OpenXmlElement> lista = parteDocumento.Document.Body.ToList().FirstOrDefault<OpenXmlElement>().ToList();
foreach (var objeto in lista)
{
if (objeto != null && objeto is SdtRun)
{
SdtRun objeto2 = (SdtRun)objeto;
.....
获取所有文本内容控件并编辑
using (WordprocessingDocument doc = WordprocessingDocument.Open(document, true))
{
MainDocumentPart parteDocumento = doc.MainDocumentPart;
foreach (SdtElement objeto in parteDocumento.Document.Descendants<SdtElement>().ToList())
{
foreach (Text t in objeto.Descendants<Text>().ToList())
{
if (t.Text == "nombre")
{
t.Text = persona.nombre;
}
if (t.Text == "primerApellido")
{
t.Text = persona.primerApellido;
}
if (t.Text == "segundoApellido")
{
t.Text = persona.segundoApellido;
}
if (t.Text == "nacionalidad")
{
t.Text = persona.nacionalidad;
}
}
}
parteDocumento.Document.Save();
}
我要获取一个Word文档中的所有内容控件并插入信息,但是程序所在的PC运行不需要安装Word
我试过:
List<SdtContentText> lista = parteDocumento.Document.Descendants<SdtContentText>().ToList();
foreach (SdtContentText objeto in lista)
并将 SdtContentText 更改为 SdtBlock
编辑:
现在我可以获得 ContentControls 但我无法编辑它们的 innerText
List <OpenXmlElement> lista = parteDocumento.Document.Body.ToList().FirstOrDefault<OpenXmlElement>().ToList();
foreach (var objeto in lista)
{
if (objeto != null && objeto is SdtRun)
{
SdtRun objeto2 = (SdtRun)objeto;
.....
获取所有文本内容控件并编辑
using (WordprocessingDocument doc = WordprocessingDocument.Open(document, true))
{
MainDocumentPart parteDocumento = doc.MainDocumentPart;
foreach (SdtElement objeto in parteDocumento.Document.Descendants<SdtElement>().ToList())
{
foreach (Text t in objeto.Descendants<Text>().ToList())
{
if (t.Text == "nombre")
{
t.Text = persona.nombre;
}
if (t.Text == "primerApellido")
{
t.Text = persona.primerApellido;
}
if (t.Text == "segundoApellido")
{
t.Text = persona.segundoApellido;
}
if (t.Text == "nacionalidad")
{
t.Text = persona.nacionalidad;
}
}
}
parteDocumento.Document.Save();
}