我有以下代码,它正在工作,它从嵌入式Xlsx打开文件流将其保存在内存流上,然后将值传递给附件并发送它没有问题。
Private Sub SendFile2()
Dim path As String = Server.MapPath("~/App_Data/RQM.xlsx")
Using fileST As FileStream = IO.File.OpenRead(path)
Dim memStream As New MemoryStream()
memStream.SetLength(fileST.Length)
fileST.Read(memStream.GetBuffer(), 0, CInt(fileST.Length))
'' Code for MailMessage and SMTP goes here
MailMsg.Attachments.Add(New Attachment(memStream, "myFile.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"))
End Using
End Using
End Sub
现在我尝试做一些版本(为该文件添加一些值,但仍然在内存流中工作)但我遇到了一些问题 我添加了
Using pck As ExcelPackage = New ExcelPackage(memStream)
Dim xlswb As ExcelWorkbook = pck.Workbook
Dim xlsws As ExcelWorksheet = xlswb.Worksheets.First
xlsws.Cells(20, 4).Value = "HELLO WORLD"
pck.SaveAs(memStream)
End Using
当我放置断点时,我看到pck获得的MemStream值为83084(原始文件的值)81kb xlsx,当我将值添加到单元格时,memStream的长度为162143,所以看来它做了一些修改,但是当我再次发送memstream trough时
MailMsg.Attachments.Add(New Attachment(memStream, "myFile.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"))
我收到165b的文件,我不确定我做错了什么。 任何帮助都是apreciated
编辑: 好吧,我无法使用相同的memStream保存它,所以我做了这个。
memStream2 = New MemoryStream(pck.GetAsByteArray())
MailMsg.Attachments.Add(New Attachment(memStream2, "myFile2.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"))
这就像魅力一样。希望对任何人都有用。