1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| Imports System
Imports System.Collections.Generic
Imports System.IO
Imports System.Linq
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Xml
Imports System.Xml.Linq
Imports DocumentFormat.OpenXml.Packaging
Partial Public Class Default2
Inherits System.Web.UI.Page
Protected Sub Page_Load(sender As Object, e As EventArgs)
End Sub
Protected Sub btnUpload_Click(sender As Object, e As EventArgs)
If FileUploadControl.HasFile Then
Try
Dim fileNameFromUser As String = FileUploadControl.FileName
Session("FileNameFromUser") = fileNameFromUser
Using memoryStream As New MemoryStream()
memoryStream.Write(FileUploadControl.FileBytes, 0, FileUploadControl.FileBytes.Length)
Using wDoc As WordprocessingDocument = WordprocessingDocument.Open(memoryStream, True)
Dim w As XNamespace = "http://schemas.openxmlformats.org/wordprocessingml/2006/main"
Dim body As XElement = wDoc.MainDocumentPart.GetXDocument().Descendants(w + "body").FirstOrDefault()
body.AddFirst(New XElement(w + "p", New XElement(w + "r", New XElement(w + "t", "Hello world"))))
wDoc.MainDocumentPart.PutXDocument()
End Using
Session("ByteArray") = memoryStream.ToArray()
End Using
Catch ex As Exception
lblMessage.Text = "ERROR: " + ex.Message.ToString()
End Try
Else
lblMessage.Text = "You have not specified a file."
End If
End Sub
Protected Sub btnDownload_Click(sender As Object, e As EventArgs)
Dim byteArray As Byte() = CType((Session("ByteArray")), Byte())
Response.Clear()
Response.ContentType = "application/octet-stream"
Dim fileName As String = CType((Session("FileNameFromUser")), String)
Response.AddHeader("Content-Disposition", [String].Format("attachment; filename={0}", fileName))
Response.BinaryWrite(byteArray)
Response.Flush()
Response.[End]()
End Sub
End Class
Public Module LocalExtensions
<System.Runtime.CompilerServices.Extension()> _
Public Function GetXDocument(part As OpenXmlPart) As XDocument
Dim partXDocument As XDocument = part.Annotation(Of XDocument)()
If partXDocument IsNot Nothing Then
Return partXDocument
End If
Using partStream As Stream = part.GetStream()
If partStream.Length = 0 Then
partXDocument = New XDocument()
partXDocument.Declaration = New XDeclaration("1.0", "UTF-8", "yes")
Else
Using partXmlReader As XmlReader = XmlReader.Create(partStream)
partXDocument = XDocument.Load(partXmlReader)
End Using
End If
End Using
part.AddAnnotation(partXDocument)
Return partXDocument
End Function
<System.Runtime.CompilerServices.Extension()> _
Public Sub PutXDocument(part As OpenXmlPart)
Dim partXDocument As XDocument = part.GetXDocument()
If partXDocument IsNot Nothing Then
Using partStream As Stream = part.GetStream(FileMode.Create, FileAccess.Write)
Using partXmlWriter As XmlWriter = XmlWriter.Create(partStream)
partXDocument.Save(partXmlWriter)
End Using
End Using
End If
End Sub
End Module |
Partager