I am trying to create an export to excel from a data object and I am using EPPlus.
EEPlus export only works once. When I trigger the button again it won't work when exporting data objects to an excel file.
This is the code for my button and I am using Blazor Telerik Server Button: <TelerikButton OnClick="@ExportRaw" Icon="file-excel">Export Raw</TelerikButton>
This is the C# code for my button to call the service C#:
public void ExportRaw()
{
ReportingService.Export(Projects, Engagements, Members);
}
This is the service I am using (EPPlus) Service:
using OfficeOpenXml;
using OfficeOpenXml.Style;
using System.Drawing;
namespace iLogBlazor.Utility.Services.Reporting
{
public class RawReportService
{
public void Export(List<Domain.Models.Project> projects, List<Engagement> engagements, List<Member> members)
{
// Creating an instance
// of ExcelPackage
ExcelPackage excel = new ExcelPackage();
#region Name of the sheet
var workSheetGeneral = excel.Workbook.Worksheets.Add("General");
var workSheetBillings = excel.Workbook.Worksheets.Add("Billing");
var workSheetBriefings = excel.Workbook.Worksheets.Add("Briefings");
var workSheetMissingInfos = excel.Workbook.Worksheets.Add("Missing Infos");
var workSheetRemarks = excel.Workbook.Worksheets.Add("Remarks");
#endregion
#region Setting of the properties of the work sheet
workSheetGeneral.TabColor = System.Drawing.Color.Black;
workSheetGeneral.DefaultRowHeight = 12;
workSheetBillings.TabColor = System.Drawing.Color.Black;
workSheetBillings.DefaultRowHeight = 12;
workSheetBriefings.TabColor = System.Drawing.Color.Black;
workSheetBriefings.DefaultRowHeight = 12;
workSheetMissingInfos.TabColor = System.Drawing.Color.Black;
workSheetMissingInfos.DefaultRowHeight = 12;
workSheetRemarks.TabColor = System.Drawing.Color.Black;
workSheetRemarks.DefaultRowHeight = 12;
#endregion
#region Setting the properties of the first row
workSheetGeneral.Row(1).Height = 15;
workSheetGeneral.Row(1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
workSheetGeneral.Row(1).Style.Font.Bold = true;
workSheetGeneral.Row(1).Style.Fill.PatternType = ExcelFillStyle.Solid;
workSheetGeneral.Row(1).Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("#64B5F6"));
workSheetBillings.Row(1).Height = 15;
workSheetBillings.Row(1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
workSheetBillings.Row(1).Style.Font.Bold = true;
workSheetBillings.Row(1).Style.Fill.PatternType = ExcelFillStyle.Solid;
workSheetBillings.Row(1).Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("#64B5F6"));
workSheetBriefings.Row(1).Height = 15;
workSheetBriefings.Row(1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
workSheetBriefings.Row(1).Style.Font.Bold = true;
workSheetBriefings.Row(1).Style.Fill.PatternType = ExcelFillStyle.Solid;
workSheetBriefings.Row(1).Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("#64B5F6"));
workSheetMissingInfos.Row(1).Height = 15;
workSheetMissingInfos.Row(1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
workSheetMissingInfos.Row(1).Style.Font.Bold = true;
workSheetMissingInfos.Row(1).Style.Fill.PatternType = ExcelFillStyle.Solid;
workSheetMissingInfos.Row(1).Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("#64B5F6"));
workSheetRemarks.Row(1).Height = 15;
workSheetRemarks.Row(1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
workSheetRemarks.Row(1).Style.Font.Bold = true;
workSheetRemarks.Row(1).Style.Fill.PatternType = ExcelFillStyle.Solid;
workSheetRemarks.Row(1).Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("#64B5F6"));
#endregion
#region General Worksheet Header of the Excel sheet
workSheetGeneral.Cells[1, 1].Value = "Record ID";
workSheetGeneral.Cells[1, 2].Value = "TaxReference Number";
workSheetGeneral.Cells[1, 3].Value = "Tracker ID";
workSheetGeneral.Cells[1, 4].Value = "Has T2?";
workSheetGeneral.Cells[1, 5].Value = "Current Status";
workSheetGeneral.Cells[1, 6].Value = "Extension Required?";
workSheetGeneral.Cells[1, 7].Value = "Tracker Project Id";
workSheetGeneral.Cells[1, 8].Value = "Extension Required Status";
workSheetGeneral.Cells[1, 9].Value = "T2 SYNC?";
workSheetGeneral.Cells[1, 10].Value = "Is VIP?";
workSheetGeneral.Cells[1, 11].Value = "First Name";
workSheetGeneral.Cells[1, 12].Value = "Last Name";
workSheetGeneral.Cells[1, 13].Value = "Middle Name";
workSheetGeneral.Cells[1, 14].Value = "Display Name";
workSheetGeneral.Cells[1, 15].Value = "Engagement";
workSheetGeneral.Cells[1, 16].Value = "Company 1";
workSheetGeneral.Cells[1, 17].Value = "Company 2";
workSheetGeneral.Cells[1, 18].Value = "Company 3";
workSheetGeneral.Cells[1, 19].Value = "YA";
workSheetGeneral.Cells[1, 20].Value = "Sent Delivered";
workSheetGeneral.Cells[1, 21].Value = "Return to Tax Office";
workSheetGeneral.Cells[1, 22].Value = "E Filed";
workSheetGeneral.Cells[1, 23].Value = "PIC";
workSheetGeneral.Cells[1, 24].Value = "MIC";
workSheetGeneral.Cells[1, 25].Value = "AMIC";
workSheetGeneral.Cells[1, 26].Value = "SIC";
workSheetGeneral.Cells[1, 27].Value = "TIC";
workSheetGeneral.Cells[1, 28].Value = "Project Type";
workSheetGeneral.Cells[1, 29].Value = "POC";
#endregion
#region Billings Worksheet Header of the Excel sheet
workSheetBillings.Cells[1, 1].Value = "TaxReference Number";
workSheetBillings.Cells[1, 2].Value = "First Name";
workSheetBillings.Cells[1, 3].Value = "Last Name";
workSheetBillings.Cells[1, 4].Value = "Middle Name";
workSheetBillings.Cells[1, 5].Value = "Display Name";
workSheetBillings.Cells[1, 6].Value = "Engagement";
workSheetBillings.Cells[1, 7].Value = "Company 1";
workSheetBillings.Cells[1, 8].Value = "Company 2";
workSheetBillings.Cells[1, 9].Value = "Company 3";
workSheetBillings.Cells[1, 10].Value = "Project Type";
workSheetBillings.Cells[1, 11].Value = "YA";
//workSheetGeneral.Cells[1, 12].Value = "is Billed?";
//workSheetGeneral.Cells[1, 13].Value = "Remark";
#endregion
#region Briefings Worksheet Header of the Excel sheet
workSheetBriefings.Cells[1, 1].Value = "TaxReference Number";
workSheetBriefings.Cells[1, 2].Value = "First Name";
workSheetBriefings.Cells[1, 3].Value = "Last Name";
workSheetBriefings.Cells[1, 4].Value = "Middle Name";
workSheetBriefings.Cells[1, 5].Value = "Display Name";
workSheetBriefings.Cells[1, 6].Value = "Engagement";
workSheetBriefings.Cells[1, 7].Value = "Company 1";
workSheetBriefings.Cells[1, 8].Value = "Company 2";
workSheetBriefings.Cells[1, 9].Value = "Company 3";
workSheetBriefings.Cells[1, 10].Value = "Project Type";
workSheetBriefings.Cells[1, 11].Value = "YA";
//workSheetGeneral.Cells[1, 12].Value = "Briefing Date?";
//workSheetGeneral.Cells[1, 13].Value = "Type of Briefing";
#endregion
#region Missing Infos Worksheet Header of the Excel sheet
workSheetMissingInfos.Cells[1, 1].Value = "TaxReference Number";
workSheetMissingInfos.Cells[1, 2].Value = "First Name";
workSheetMissingInfos.Cells[1, 3].Value = "Last Name";
workSheetMissingInfos.Cells[1, 4].Value = "Middle Name";
workSheetMissingInfos.Cells[1, 5].Value = "Display Name";
workSheetMissingInfos.Cells[1, 6].Value = "Engagement";
workSheetMissingInfos.Cells[1, 7].Value = "Company 1";
workSheetMissingInfos.Cells[1, 8].Value = "Company 2";
workSheetMissingInfos.Cells[1, 9].Value = "Company 3";
workSheetMissingInfos.Cells[1, 10].Value = "Project Type";
workSheetMissingInfos.Cells[1, 11].Value = "YA";
workSheetMissingInfos.Cells[1, 12].Value = "Category";
workSheetMissingInfos.Cells[1, 13].Value = "Country Code";
workSheetMissingInfos.Cells[1, 14].Value = "Document Type";
workSheetMissingInfos.Cells[1, 15].Value = "Event Type";
workSheetMissingInfos.Cells[1, 16].Value = "Product Type";
workSheetMissingInfos.Cells[1, 17].Value = "Needed From";
workSheetMissingInfos.Cells[1, 18].Value = "Visible To";
workSheetMissingInfos.Cells[1, 19].Value = "Case Id";
workSheetMissingInfos.Cells[1, 20].Value = "MI Case Id To";
workSheetMissingInfos.Cells[1, 21].Value = "Source";
workSheetMissingInfos.Cells[1, 22].Value = "Over all information Status";
workSheetMissingInfos.Cells[1, 23].Value = "Date Raised";
workSheetMissingInfos.Cells[1, 24].Value = "Date Required By";
#endregion
#region Reamrks Worksheet Header of the Excel sheet
workSheetRemarks.Cells[1, 1].Value = "TaxReference Number";
workSheetRemarks.Cells[1, 2].Value = "First Name";
workSheetRemarks.Cells[1, 3].Value = "Last Name";
workSheetRemarks.Cells[1, 4].Value = "Middle Name";
workSheetRemarks.Cells[1, 5].Value = "Display Name";
workSheetRemarks.Cells[1, 6].Value = "Engagement";
workSheetRemarks.Cells[1, 7].Value = "Company 1";
workSheetRemarks.Cells[1, 8].Value = "Company 2";
workSheetRemarks.Cells[1, 9].Value = "Company 3";
workSheetRemarks.Cells[1, 10].Value = "Project Type";
workSheetRemarks.Cells[1, 11].Value = "YA";
workSheetRemarks.Cells[1, 12].Value = "Remarks";
workSheetRemarks.Cells[1, 13].Value = "Created By";
workSheetRemarks.Cells[1, 14].Value = "Created On";
#endregion
// Inserting the article data into excel
// sheet by using the for each loop
// As we have values to the first row
// we will start with second row
int recordIndex = 2;
foreach (var project in projects)
{
#region General Worksheet
workSheetGeneral.Cells[recordIndex, 1].Value = project.Id;
if (project.TaxReference != null) {
workSheetGeneral.Cells[recordIndex, 2].Value = project.TaxReference.TaxReferenceNumber;
}
workSheetGeneral.Cells[recordIndex, 3].Value = project.Assignee.TrackerId;
workSheetGeneral.Cells[recordIndex, 4].Value = project.LocalTracker.HasGlobalTrackerRecord ? "Yes" : "No";
workSheetGeneral.Cells[recordIndex, 5].Value = project.LocalTracker.TrackerStatus.CurrentStatus;
workSheetGeneral.Cells[recordIndex, 6].Value = project.LocalTracker.ExtensionRequired ? "Yes" : "No";
workSheetGeneral.Cells[recordIndex, 7].Value = project.LocalTracker.GlobalTrackerProjectId;
workSheetGeneral.Cells[recordIndex, 8].Value = project.LocalTracker.ExtensionRequiredStatus;
workSheetGeneral.Cells[recordIndex, 9].Value = project.LocalTracker.IsGlobalTrackerSync ? "Yes" : "No";
workSheetGeneral.Cells[recordIndex, 10].Value = project.Assignee.IsVip ? "Yes" : "No";
workSheetGeneral.Cells[recordIndex, 11].Value = project.Assignee.FirstName;
workSheetGeneral.Cells[recordIndex, 12].Value = project.Assignee.LastName;
workSheetGeneral.Cells[recordIndex, 13].Value = project.Assignee.MiddleName;
workSheetGeneral.Cells[recordIndex, 14].Value = project.Assignee.DisplayName;
var engagementName = engagements.Where(r => r.Id == project.EngagementId).FirstOrDefault()?.EngagementName ?? "(No Engagement)";
workSheetGeneral.Cells[recordIndex, 15].Value = engagementName;
workSheetGeneral.Cells[recordIndex, 16].Value = project.EmploymentCompany1;
workSheetGeneral.Cells[recordIndex, 17].Value = project.EmploymentCompany2;
workSheetGeneral.Cells[recordIndex, 18].Value = project.EmploymentCompany3;
workSheetGeneral.Cells[recordIndex, 19].Value = project.Ya;
workSheetGeneral.Cells[recordIndex, 20].Style.Numberformat.Format = "dd-mm-yyyy";
workSheetGeneral.Cells[recordIndex, 20].Value = project.LocalTracker.TrackerStatus.DatePostProcessingReview;
workSheetGeneral.Cells[recordIndex, 21].Style.Numberformat.Format = "dd-mm-yyyy";
workSheetGeneral.Cells[recordIndex, 21].Value = project.LocalTracker.TrackerStatus.DateSubmitToAuthorities;
workSheetGeneral.Cells[recordIndex, 22].Style.Numberformat.Format = "dd-mm-yyyy";
workSheetGeneral.Cells[recordIndex, 22].Value = project.LocalTracker.TrackerStatus.DateEfiled;
var pic = members.Where(r => r.Id == project.PicUserId).Select(r => r.DisplayName).FirstOrDefault();
workSheetGeneral.Cells[recordIndex, 23].Value = pic;
var mic = members.Where(r => r.Id == project.MicUserId).Select(r => r.DisplayName).FirstOrDefault();
workSheetGeneral.Cells[recordIndex, 24].Value = mic;
var amic = members.Where(r => r.Id == project.AmicUserId).Select(r => r.DisplayName).FirstOrDefault();
workSheetGeneral.Cells[recordIndex, 25].Value = amic;
var sic = members.Where(r => r.Id == project.SicUserId).Select(r => r.DisplayName).FirstOrDefault();
workSheetGeneral.Cells[recordIndex, 26].Value = sic;
var tic = members.Where(r => r.Id == project.SicUserId).Select(r => r.DisplayName).FirstOrDefault();
workSheetGeneral.Cells[recordIndex, 27].Value = tic;
workSheetGeneral.Cells[recordIndex, 28].Value = project.ProjectType;
var poc = members.Where(r => r.Id == project.SicUserId).Select(r => r.DisplayName).FirstOrDefault();
workSheetGeneral.Cells[recordIndex, 29].Value = poc;
#endregion
#region Billings Worksheet
if (project.TaxReference != null)
{
workSheetBillings.Cells[recordIndex, 1].Value = project.TaxReference.TaxReferenceNumber;
}
workSheetBillings.Cells[recordIndex, 2].Value = project.Assignee.FirstName;
workSheetBillings.Cells[recordIndex, 3].Value = project.Assignee.LastName;
workSheetBillings.Cells[recordIndex, 4].Value = project.Assignee.MiddleName;
workSheetBillings.Cells[recordIndex, 5].Value = project.Assignee.DisplayName;
workSheetBillings.Cells[recordIndex, 6].Value = engagementName;
workSheetBillings.Cells[recordIndex, 7].Value = project.EmploymentCompany1;
workSheetBillings.Cells[recordIndex, 8].Value = project.EmploymentCompany2;
workSheetBillings.Cells[recordIndex, 9].Value = project.EmploymentCompany3;
workSheetBillings.Cells[recordIndex, 10].Value = project.ProjectType;
workSheetBillings.Cells[recordIndex, 11].Value = project.Ya;
//workSheetBillings.Cells[recordIndex, 12].Value = project.LocalTracker.TrackerBills.isBilled;
//workSheetBillings.Cells[recordIndex, 13].Value = project.LocalTracker.TrackerBills.Remark;
#endregion
#region Briefings Worksheet
if (project.TaxReference != null)
{
workSheetBriefings.Cells[recordIndex, 1].Value = project.TaxReference.TaxReferenceNumber;
}
workSheetBriefings.Cells[recordIndex, 2].Value = project.Assignee.FirstName;
workSheetBriefings.Cells[recordIndex, 3].Value = project.Assignee.LastName;
workSheetBriefings.Cells[recordIndex, 4].Value = project.Assignee.MiddleName;
workSheetBriefings.Cells[recordIndex, 5].Value = project.Assignee.DisplayName;
workSheetBriefings.Cells[recordIndex, 6].Value = engagementName;
workSheetBriefings.Cells[recordIndex, 7].Value = project.EmploymentCompany1;
workSheetBriefings.Cells[recordIndex, 8].Value = project.EmploymentCompany2;
workSheetBriefings.Cells[recordIndex, 9].Value = project.EmploymentCompany3;
workSheetBriefings.Cells[recordIndex, 10].Value = project.ProjectType;
workSheetBriefings.Cells[recordIndex, 11].Value = project.Ya;
//workSheetBriefings.Cells[recordIndex, 12].Value = project.LocalTracker.TrackerBriefings.BriefingDate;
//workSheetBriefings.Cells[recordIndex, 12].Value = project.LocalTracker.TrackerBriefings.TypeOfBriefing;
#endregion
#region Missing Infos Worksheet
//if (project.TaxReference != null)
//{
// workSheetMissingInfos.Cells[recordIndex, 1].Value = project.TaxReference.TaxReferenceNumber;
//}
//workSheetMissingInfos.Cells[recordIndex, 2].Value = project.Assignee.FirstName;
//workSheetMissingInfos.Cells[recordIndex, 3].Value = project.Assignee.LastName;
//workSheetMissingInfos.Cells[recordIndex, 4].Value = project.Assignee.MiddleName;
//workSheetMissingInfos.Cells[recordIndex, 5].Value = project.Assignee.DisplayName;
//workSheetMissingInfos.Cells[recordIndex, 6].Value = engagementName;
//workSheetMissingInfos.Cells[recordIndex, 7].Value = project.EmploymentCompany1;
//workSheetMissingInfos.Cells[recordIndex, 8].Value = project.EmploymentCompany2;
//workSheetMissingInfos.Cells[recordIndex, 9].Value = project.EmploymentCompany3;
//workSheetMissingInfos.Cells[recordIndex, 10].Value = project.ProjectType;
//workSheetMissingInfos.Cells[recordIndex, 11].Value = project.Ya;
//workSheetMissingInfos.Cells[recordIndex, 12].Value = project;
//workSheetMissingInfos.Cells[recordIndex, 13].Value = project;
//workSheetMissingInfos.Cells[recordIndex, 14].Value = project;
//workSheetMissingInfos.Cells[recordIndex, 15].Value = project;
//workSheetMissingInfos.Cells[recordIndex, 16].Value = project;
//workSheetMissingInfos.Cells[recordIndex, 17].Value = project;
//workSheetMissingInfos.Cells[recordIndex, 18].Value = project;
//workSheetMissingInfos.Cells[recordIndex, 19].Value = project;
//workSheetMissingInfos.Cells[recordIndex, 20].Value = project;
//workSheetMissingInfos.Cells[recordIndex, 21].Value = project;
//workSheetMissingInfos.Cells[recordIndex, 22].Value = project;
//workSheetMissingInfos.Cells[recordIndex, 23].Value = project;
//workSheetMissingInfos.Cells[recordIndex, 24].Value = project;
#endregion
#region Remarks Worksheet
//if (project.TaxReference != null)
//{
// workSheetRemarks.Cells[recordIndex, 1].Value = project.TaxReference.TaxReferenceNumber;
//}
//workSheetRemarks.Cells[recordIndex, 2].Value = project.Assignee.FirstName;
//workSheetRemarks.Cells[recordIndex, 3].Value = project.Assignee.LastName;
//workSheetRemarks.Cells[recordIndex, 4].Value = project.Assignee.MiddleName;
//workSheetRemarks.Cells[recordIndex, 5].Value = project.Assignee.DisplayName;
//workSheetRemarks.Cells[recordIndex, 6].Value = engagementName;
//workSheetRemarks.Cells[recordIndex, 7].Value = project.EmploymentCompany1;
//workSheetRemarks.Cells[recordIndex, 8].Value = project.EmploymentCompany2;
//workSheetRemarks.Cells[recordIndex, 9].Value = project.EmploymentCompany3;
//workSheetRemarks.Cells[recordIndex, 10].Value = project.ProjectType;
//workSheetRemarks.Cells[recordIndex, 11].Value = project.Ya;
//workSheetRemarks.Cells[recordIndex, 12].Value = project.LocalTracker.TrackerRemarks.Remark;
//workSheetRemarks.Cells[recordIndex, 13].Value = project.LocalTracker.TrackerRemarks.CreatedBy;
//workSheetRemarks.Cells[recordIndex, 14].Value = project.LocalTracker.TrackerRemarks.CreatedDate;
#endregion
recordIndex++;
}
// By default, the column width is not
// set to auto fit for the content
// of the range, so we are using
// AutoFit() method here.
for (int i = 1; i <= 100; i++)
{
workSheetGeneral.Column(i).AutoFit();
workSheetBillings.Column(i).AutoFit();
workSheetBriefings.Column(i).AutoFit();
workSheetMissingInfos.Column(i).AutoFit();
workSheetRemarks.Column(i).AutoFit();
}
// file name with .xlsx extension
string p_strPath = $"C:\\Users\\TestExcelExport\\ExportRaw_{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.xlsx";
if (File.Exists(p_strPath))
File.Delete(p_strPath);
// Create excel file on physical disk
FileStream objFileStrm = File.Create(p_strPath);
objFileStrm.Close();
// Write content to excel file
File.WriteAllBytes(p_strPath, excel.GetAsByteArray());
//Close Excel package
excel.Dispose();
Console.ReadKey();
}
}
}
Try to put export in using
scope:
using (ExcelPackage package = new ExcelPackage(reportFile))
{
“Export logic…”
package.Save();
}
It's C# 8 syntax and lives until the end of the block. Also, you can use [nameOfSheet].Cells.AutoFitColumns();
to fit the width of the columns automatically without loop.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.