TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
G Y
1.5k
229
44k
Excel Sheet generation is taking long time using CSharp
Jun 10 2019 2:00 AM
using (SpreadsheetDocument spreadSheet = SpreadsheetDocument.Open(templateStream, true))
{
//workbook
WorkbookPart workbookPart = spreadSheet.WorkbookPart;
//cell styles
uint headerCellIndex = SetBorderAndFill(workbookPart, "F5F5F5", "bold", "header");
// ReSharper disable once UnusedVariable
uint greyCellIndex = SetBorderAndFill(workbookPart, "F5F5F5");
uint whiteCellIndex = SetBorderAndFill(workbookPart, "FFFFFF", "normal", "right");
uint white = SetBorderAndFill(workbookPart, "FFFFFF");
uint greyRightCellIndex = SetBorderAndFill(workbookPart, "F5F5F5", "bold", "right");
//first sheet
WorksheetPart worksheetPartFirst =
GetWorksheetPartByName(spreadSheet, "Sheet1", "Compliance Report");
worksheetPartFirst.Worksheet = new Worksheet();
worksheetPartFirst.Worksheet.AppendChild(new SheetData());
worksheetPartFirst.Worksheet.First().AppendChild(new Row() { RowIndex = 1 });
AppendCell(0, companyName ?? "" + " - " + today, worksheetPartFirst).StyleIndex =
headerCellIndex;
AppendCell(0, "BaseCourse Name ", worksheetPartFirst).StyleIndex = headerCellIndex;
AppendCell(0, "Number of " + empLabel, worksheetPartFirst).StyleIndex = headerCellIndex;
AppendCell(0, "Completed", worksheetPartFirst).StyleIndex = headerCellIndex;
AppendCell(0, "Still to complete", worksheetPartFirst).StyleIndex = headerCellIndex;
AppendCell(0, "Compliance %", worksheetPartFirst).StyleIndex = headerCellIndex;
uint rowIndex = 2;
foreach (var baseCourse in data.Data)
{
foreach (var home in baseCourse.Data)
{
worksheetPartFirst.Worksheet.First().AppendChild(new Row() { RowIndex = rowIndex });
AppendCell(rowIndex - 1, home.HomeName, worksheetPartFirst).StyleIndex = white;
AppendCellNumber(rowIndex - 1, baseCourse.BaseCourseName, worksheetPartFirst).StyleIndex = whiteCellIndex;
AppendCellNumber(rowIndex - 1, home.TotalAssigned.ToString(), worksheetPartFirst).StyleIndex = whiteCellIndex;
AppendCellNumber(rowIndex - 1, home.Completed.ToString(), worksheetPartFirst).StyleIndex = whiteCellIndex;
AppendCellNumber(rowIndex - 1, home.ToComplete.ToString(), worksheetPartFirst).StyleIndex = whiteCellIndex;
// ReSharper disable once SpecifyACultureInStringConversionExplicitly
AppendCellNumber(rowIndex - 1, home.Compliance.ToString(), worksheetPartFirst).StyleIndex = whiteCellIndex;
rowIndex++;
}
worksheetPartFirst.Worksheet.First().AppendChild(new Row() { RowIndex = rowIndex });
AppendCell(rowIndex - 1, baseCourse.BaseCourseName + " Total", worksheetPartFirst).StyleIndex = greyRightCellIndex;
AppendCellNumber(rowIndex - 1, "", worksheetPartFirst).StyleIndex = greyRightCellIndex;
AppendCellNumber(rowIndex - 1, baseCourse.TotalAssigned.ToString(), worksheetPartFirst).StyleIndex = greyRightCellIndex;
AppendCellNumber(rowIndex - 1, baseCourse.Completed.ToString(), worksheetPartFirst).StyleIndex = greyRightCellIndex;
AppendCellNumber(rowIndex - 1, baseCourse.ToComplete.ToString(), worksheetPartFirst).StyleIndex = greyRightCellIndex;
// ReSharper disable once SpecifyACultureInStringConversionExplicitly
AppendCellNumber(rowIndex - 1, baseCourse.Compliance.ToString(), worksheetPartFirst).StyleIndex = greyRightCellIndex;
rowIndex++;
}
worksheetPartFirst.Worksheet.First().AppendChild(new Row() { RowIndex = rowIndex });
worksheetPartFirst.Worksheet.First().AppendChild(new Row() { RowIndex = rowIndex + 1 });
AppendCell(rowIndex, data.Title, worksheetPartFirst).StyleIndex = headerCellIndex;
AppendCellNumber(rowIndex, " ", worksheetPartFirst).StyleIndex =
greyRightCellIndex;
AppendCellNumber(rowIndex, data.TotalAssigned.ToString(), worksheetPartFirst).StyleIndex =
greyRightCellIndex;
AppendCellNumber(rowIndex, data.Completed.ToString(), worksheetPartFirst).StyleIndex =
greyRightCellIndex;
AppendCellNumber(rowIndex, data.ToComplete.ToString(), worksheetPartFirst).StyleIndex =
greyRightCellIndex;
// ReSharper disable once SpecifyACultureInStringConversionExplicitly
AppendCellNumber(rowIndex, data.Compliance.ToString(), worksheetPartFirst).StyleIndex =
greyRightCellIndex;
//set columns width on the end
SetColumnWidth(worksheetPartFirst.Worksheet, 1, 42);
for (uint i = 2; i < 7; i++)
{
SetColumnWidth(worksheetPartFirst.Worksheet, i, 22);
}
//save document on the end
spreadSheet.WorkbookPart.Workbook.Save();
}
The foreach loops are taking around 15 minutes to execute.
Is there any way to improve the performance for generating the excel sheet
Reply
Answers (
2
)
How do we call REST API in C#.net
Draw vertical bold line between some columns in datagridview