web-dev-qa-db-fra.com

EPPlus famille de polices non affectée

J'utilise asp.net MVC 4 et epplus comme un paquet de pépites pour exporter mes données dans un fichier Excel. Je le fais comme suit:

        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();
        }

Le problème est que lorsque je télécharge le fichier et que je l'ouvre sur Excel 2016, la famille de polices n'est pas affectée, mais dans la zone de nom de la police, elle apparaît. Si je me concentre sur la liste déroulante et que j'appuie sur Entrée, la famille de polices sera affectée.

Comment puis-je résoudre ce problème ?

8
Varan Sinayee

Essaye ça:

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;
13
VDWWD
workSheet.Cells.Style.Font.Name = "Arial Narrow";
workSheet.Cells.Style.Font.Size = 10;

Cela affectera toutes les lignes et colonnes .

3