2
嗨我正在使用EPPPlus來返回一個Excel文件,併發送相同的文件作爲附件。 我可以打開excel文件並獲得附件,但是當我打開電子郵件附件時,出現錯誤消息說文件已損壞。 請看看Belwo代碼並提出改變建議。EPP加Excel作爲附件
MemoryStream outputStream = new MemoryStream();
using (ExcelPackage pck = new ExcelPackage(outputStream))
{
//Create the worksheet
ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Demo");
//Load the datatable into the sheet, starting from cell A1. Print the column names on row 1
ws.Cells["A1"].LoadFromDataTable(tbl, true);
//Format the header for column 1-3
using (ExcelRange rng = ws.Cells[1, 1, 1, tbl.Columns.Count])
{
rng.Style.Font.Bold = true;
rng.Style.Fill.PatternType = ExcelFillStyle.Solid; //Set Pattern for the background to Solid
rng.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(79, 129, 189)); //Set color to dark blue
rng.Style.Font.Color.SetColor(Color.White);
}
//Example how to Format Column 1 as numeric
using (ExcelRange col = ws.Cells[2, 1, 2 + tbl.Rows.Count, 1])
{
col.Style.Numberformat.Format = "#,##0.00";
col.Style.HorizontalAlignment = ExcelHorizontalAlignment.Right;
}
MailMessage mail = null;
try
{
mail = new MailMessage();
mail.From = new MailAddress("[email protected]", "Adidas SystemMail");
mail.To.Add(new MailAddress(emailAddress));
mail.Subject = "Store Finder Geocoding";
mail.IsBodyHtml = true;
string message = "";
message += ".LLHere is the attachment with list of stores and geocode values you requested." + "</br>";
mail.Body = message;
outputStream.Position = 0;
Attachment attachment = new Attachment(outputStream, "Geocoding.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
mail.Attachments.Add(attachment);
mail.SubjectEncoding = System.Text.Encoding.UTF8;
mail.BodyEncoding = System.Text.Encoding.UTF8;
SmtpClient client = new SmtpClient("localhost");
client.Send(mail);
}
catch (Exception ex)
{
//throw ex;
}
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", String.Format(CultureInfo.InvariantCulture, "attachment; filename={0}", "geo.xlsx"));
Response.BinaryWrite(pck.GetAsByteArray());
Response.End();
有什麼建議嗎? – user2132124 2013-03-17 10:56:09