简体   繁体   中英

EEPlus export only works once. When I trigger the button again it won't work when exporting data objects to an excel file

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM