EPPlus Font Family Not Affected

Varan Sinayee picture Varan Sinayee · Oct 14, 2016 · Viewed 14.3k times · Source

I'm using asp.net MVC 4 and epplus as a nuget package for exporting my data into an excel file. I do that as the following:

var excel = new ExcelPackage();
var workSheet = excel.Workbook.Worksheets.Add("Consumption");
workSheet.View.RightToLeft = true;
for (var col = 1; col <= totalCols; col++)
{
    workSheet.Cells[1, col].Style.Font.Name = "B Zar";
    workSheet.Cells[1, col].Style.Font.Size = 16;
    workSheet.Cells[1, col].Style.Font.Bold = true;
    workSheet.Cells[1, col].Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
    workSheet.Cells[1, col].Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.LightGray);
    workSheet.Cells[1, col].Value = ds.Tables[0].Columns[col - 1].ColumnName;
}

for (var row = 1; row <= totalRows; row++)
    for (var col = 0; col < totalCols; col++)
    {
        workSheet.Cells[row + 1, col + 1].Style.Font.Name = "B Zar";
        workSheet.Cells[row + 1, col + 1].Style.Font.Size = 11;
        workSheet.Cells[row + 1, col + 1].Value = ds.Tables[0].Rows[row - 1][col];
    }

workSheet.Cells[1, 1, totalRows + 1, totalCols].Style.Border.Top.Style =
    workSheet.Cells[1, 1, totalRows + 1, totalCols].Style.Border.Bottom.Style =
        workSheet.Cells[1, 1, totalRows + 1, totalCols].Style.Border.Right.Style =
            workSheet.Cells[1, 1, totalRows + 1, totalCols].Style.Border.Left.Style =
                OfficeOpenXml.Style.ExcelBorderStyle.Thin;
workSheet.Cells[1, 1, totalRows + 1, totalCols].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center;

using (var memoryStream = new MemoryStream())
{
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("content-disposition", "attachment;  filename=Consumptions.xlsx");
    excel.SaveAs(memoryStream);
    memoryStream.WriteTo(Response.OutputStream);
    Response.Flush();
    Response.End();
}

The problem is that when I download the file and open it on Excel 2016, the font family not affected but on the font name box, it appears. If I focus on the combo box and press Enter, the font family will be affected.

How can I solve this problem?

Answer

VDWWD picture VDWWD · Oct 21, 2016

Try this:

var allCells = sheet.Cells[1, 1, sheet.Dimension.End.Row, sheet.Dimension.End.Column];
var cellFont = allCells.Style.Font;
cellFont.SetFromFont(new Font("Times New Roman", 12));
cellFont.Bold = true;
cellFont.Italic = true;