Это не совсем ответ для файлов xsd. Но по просьбе я выдвинул это.
Открываю docx как поток памяти, и в этом примере у меня есть таблица с заголовком.
То есть в вордовском документе есть таблица и при ее выделении правой кнопкой мыши->свойства->Альтернативный текст->заголовок.
Это название — то, что я ищу в документе Word, чтобы знать, куда добавить свои материалы. Вероятно, есть гораздо лучшие способы сделать это. Но это делает документ редактируемым для администраторов, и пока они не удалят таблицу, они могут редактировать ее по своему усмотрению.
dim mem As MemoryStream
dim doc = WordprocessingDocument.Open(mem, true)
Dim tableProperties = doc.MainDocumentPart.Document.Body.Descendants(Of TableProperties)().Where(Function(tp) tp.TableCaption IsNot Nothing)
For Each tProp As TableProperties In tableProperties
If tProp.TableCaption.Val.ToString() = "DatatableTitle" Then
Dim tbl = DirectCast(tProp.Parent, Table)
InsertTableRows(tbl, myListOfThings)
End If
Next
Private Function CreateTableCellText(myText As String) As TableCell
Dim run = New Run()
Dim runProperties = New RunProperties()
runProperties.Append(New RunFonts() With { .Ascii = "Times New Roman" })
runProperties.Append(New FontSize() With { .Val = "16" })
run.PrependChild(runProperties)
run.Append(New Text(myText))
Dim p = New Paragraph()
p.Append(run)
Dim td = New TableCell()
td.Append(p)
Return td
End Function
Private Sub InsertTableRows(tbl As Table, patients As List(Of MyTableList))
'var refRow = tbl.Elements<TableRow>().ElementAt(1); // the first is the header.
tbl.Elements(Of TableRow)().ElementAt(1).Remove()
For Each patient As MyTableList In patients
Dim tr = New TableRow()
tr.Append(CreateTableCellText(patient.DepartmentName))
tr.Append(CreateTableCellText(patient.PatientLastName))
tbl.Append(tr)
Next
End Sub
End Class
Public Class MyTableList
Public Property DepartmentName() As String
Get
Return m_DepartmentName
End Get
Set
m_DepartmentName = Value
End Set
End Property
Private m_DepartmentName As String
Public Property PatientLastName() As String
Get
Return m_PatientLastName
End Get
Set
m_PatientLastName = Value
End Set
End Property
Private m_PatientLastName As String
End Class
И добавить флажки и тому подобное не проблема, просто создайте их в слове, откройте документ слова в текстовом редакторе, скопируйте xml из документа и добавьте его как новый абзац, а затем используйте firstChild.InnerXml и скопируйте xml в текст. а затем добавить его
person
Archlight
schedule
03.03.2014