.net 从SSRS导出加载excel文档时更改EPPlus格式

.net 从SSRS导出加载excel文档时更改EPPlus格式,.net,reporting-services,reportviewer,epplus,.net,Reporting Services,Reportviewer,Epplus,我想在发送电子邮件给特定的人之前,将多个excel文档(通过导出具有不同参数的SSRS报告获得)组合在一起。每个文档都需要是“主”文档中的新工作表 我有下面的代码-这是可行的,除了EPPlus似乎改变了所有的文本格式有粗体,斜体和罢工通过样式 DateTime startDate = DateTime.Today.AddDays(-7), endDate = DateTime.Today; List<EnAccount> accounts = GetAccounts(star

我想在发送电子邮件给特定的人之前,将多个excel文档(通过导出具有不同参数的SSRS报告获得)组合在一起。每个文档都需要是“主”文档中的新工作表

我有下面的代码-这是可行的,除了EPPlus似乎改变了所有的文本格式有粗体,斜体和罢工通过样式

  DateTime startDate = DateTime.Today.AddDays(-7), endDate = DateTime.Today;
  List<EnAccount> accounts = GetAccounts(startDate, endDate);

    using (ExcelPackage excelPackage = new ExcelPackage())
    {
        foreach (EnAccount account in accounts)
            using (MemoryStream reportStream = new MemoryStream(
                GetReport("REPORTSERVERPATH", "REPORTPATH", "EXCELOPENXML", new List<ReportParameter>() { new ReportParameter("AccountID", account.AccountID.ToString()), new ReportParameter("StartDate", startDate.ToShortDateString()), new ReportParameter("EndDate", endDate.ToShortDateString()) })
            ))
            using (ExcelPackage accountPackage = new ExcelPackage(reportStream))
                excelPackage.Workbook.Worksheets.Add(account.AccountName, accountPackage.Workbook.Worksheets.First());

        using (MemoryStream outputStream = new MemoryStream(excelPackage.GetAsByteArray()))
        using (MailMessage message = new MailMessage())
        {
            message.To.Add(new MailAddress("email@email.com.au", "NAME"));
            message.From = new MailAddress("email2@email.com.au", "TEST");
            message.Subject = "SUBJECT";
            message.Body = "BODY.";
            message.Attachments.Add(new Attachment(outputStream, "Report.xlsx"));

            SmtpClient smtpClient = new SmtpClient("MAILCLIENT");
            smtpClient.Send(message);
        }
    }
DateTime startDate=DateTime.Today.AddDays(-7),endDate=DateTime.Today;
列表帐户=获取帐户(开始日期、结束日期);
使用(ExcelPackage ExcelPackage=new ExcelPackage())
{
foreach(启用帐户中的帐户)
使用(MemoryStream reportStream=新的MemoryStream)(
GetReport(“REPORTSERVERPATH”、“REPORTPATH”、“EXCELOPENXML”、new List(){new ReportParameter(“AccountID”,account.AccountID.ToString()),new ReportParameter(“StartDate”,StartDate.ToSortDateString()),new ReportParameter(“EndDate”,EndDate.ToSortDateString())})
))
使用(ExcelPackage accountPackage=新的ExcelPackage(reportStream))
excelPackage.Workbook.Worksheets.Add(account.AccountName,accountPackage.Workbook.Worksheets.First());
使用(MemoryStream outputStream=新的MemoryStream(excelPackage.GetAsByteArray())
使用(MailMessage=newmailmessage())
{
message.To.Add(新邮件地址(“email@email.com.au“,”姓名“);
message.From=新邮件地址(“email2@email.com.au“,”测试“);
message.Subject=“Subject”;
message.Body=“Body。”;
Add(新附件(outputStream,“Report.xlsx”);
SmtpClient SmtpClient=新的SmtpClient(“MAILCLIENT”);
发送(消息);
}
}
有人能帮我解释一下为什么它会改变这种格式,以及我如何让它保留原来的格式吗?
提前感谢您的帮助。

您确定需要这样做吗?在SSRS中创建“主”报告。在此报告中,添加两个包含子报告的列表。然后在列表属性上,在之前添加分页符。如果然后运行主报告,则每个工作表上都会有一个报告。

如果不了解要合并的excel表的更多信息,很难说。你能发一些样品吗?我认为数据本身并不重要。这似乎是SSRS的出口方式。我通过显式更改字体样式(例如accountPackage.Workbook.Worksheets.First().styles.Fonts[0].Bold=false等)解决了这个问题。但这并不理想。这里有一个数据的例子:“我认为数据本身并不重要。它似乎是SSRS如何导出的。”确切地说。数据可能不是问题所在,而是SSRS的输出中的一些东西。举个例子,其他人可以尝试重现这个问题,看看他们是否能想出解决方案。除非其他人处理过完全相同的问题并能提供答案,否则这可能是最好的方法。