Open XML for primary school goers

Open XML for primary school goers

  • Comments 3

Ok ..I agree! I was not a simple-sober-studious-obedient-goodie-good student.

I do remember when I was a primary school goer, whenever me or any of my friends wanted a leave, we almost always used the same letter template, just modifying a few fields.

Yesterday, I was thinking about this. While working on an Open XML issue and thought of creating a sample which primary school goers can use to generate application templates.

This sample just takes the fields that you are finally going to modify and creates the application docx for you. Oh .. well it will also demonstrate how to modify CustomXML attached to a docx file.

 

Here is it. Have fun -

 

 

Imports System.IO
Imports System.IO.Packaging
Imports System.Xml
Public Class AddFields

Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click
Me.Close()
End Sub

Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
Dim fieldscollection As New Collection
fieldscollection.Add(AddressTo.Text, "AddressTo")
fieldscollection.Add(Place.Text, "Place")
fieldscollection.Add(Teacher.Text, "Teacher")
fieldscollection.Add(Sickness.Text, "Sickness")
fieldscollection.Add(TimeFrame.Text, "TimeFrame")
fieldscollection.Add(Days.Text, "Days")
fieldscollection.Add(StudentName.Text, "StudentName")
fieldscollection.Add(Dated.Text, "Dated")
UpdateXML(fieldscollection)

End Sub

Public Sub UpdateXML(ByRef fs As Collection)

' Given a file name, retrieve the officeDocument part.
Dim fileName As String = "C:\Users\username\Desktop\test\application.docx"

Const documentRelationshipType As String = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"
Const customRelationshipType As String = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml"

' Open the package with read/write access.
Using myPackage As Package = Package.Open(fileName, FileMode.Open, FileAccess.ReadWrite)
' Get the main document part (workbook.xml, document.xml, presentation.xml).
For Each relationship As PackageRelationship In myPackage.GetRelationshipsByType(documentRelationshipType)
' There should only be one document part in the package.
Dim documentUri As Uri = PackUriHelper.ResolvePartUri(New Uri("/", UriKind.Relative), relationship.TargetUri)
Dim documentPart As PackagePart = myPackage.GetPart(documentUri)
Dim customPart As PackagePart = Nothing 'declare a custom part
'Get the custom xml part
For Each crelation As PackageRelationship In documentPart.GetRelationshipsByType(customRelationshipType)
'There should be only one customxml part in the package
Dim customUri As Uri = PackUriHelper.ResolvePartUri(New Uri("/", UriKind.Relative), crelation.TargetUri)
customPart = myPackage.GetPart(customUri)
Exit For
Next

Dim customDoc As XmlDocument = New XmlDocument()
customDoc.Load(customPart.GetStream())
'Update XML
customDoc.SelectSingleNode("/root/addressto").InnerXml = fs.Item("AddressTo")
customDoc.SelectSingleNode("/root/place").InnerXml = fs.Item("Place")
customDoc.SelectSingleNode("/root/teacher").InnerXml = fs.Item("Teacher")
customDoc.SelectSingleNode("/root/sickness").InnerXml = fs.Item("Sickness")
customDoc.SelectSingleNode("/root/timeframe").InnerXml = fs.Item("TimeFrame")
customDoc.SelectSingleNode("/root/days").InnerXml = fs.Item("Days")
customDoc.SelectSingleNode("/root/name").InnerXml = fs.Item("StudentName")
customDoc.SelectSingleNode("/root/date").InnerXml = fs.Item("Dated")


' Save the modified customxml back into its part.
customDoc.Save(customPart.GetStream(FileMode.Create, FileAccess.ReadWrite))


' Only one customXML part, so get out now.
Exit For
Next
myPackage.Flush()
myPackage.Close()
End Using
MsgBox("Done!")
End Sub


End Class

 

docx that it modifies is also attached to the post.

 

 


 

Not responsible for errors in content, meaning, tact, or judgment. Live and let live. Toes go in first. I didn't do it. Enjoy.

Leave a Comment
  • Please add 7 and 4 and type the answer here:
  • Post
  • Open XML can help you skip school. I've covered in the past how ISVs, corporate developers, information

  • Ok ..I agree! I was not a simple-sober-studious-obedient-goodie-good student. I do remember when I was a primary school goer, whenever me or any of my friends wanted a leave, we almost always used the same letter template, just modifying a few fields

  • Ok ..I agree! I was not a simple-sober-studious-obedient-goodie-good student. I do remember when I was a primary school goer, whenever me or any of my friends wanted a leave, we almost always used the same letter template, just modifying a few fields

Page 1 of 1 (3 items)