如何使用EPPLUS编辑Excel并将其作为附件发送

时间:2016-01-05 22:49:40

标签: asp.net vb.net epplus

我有以下代码,它正在工作,它从嵌入式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"))

这就像魅力一样。希望对任何人都有用。

0 个答案:

没有答案