it-swarm.com.de

EPPlus-Schriftfamilie nicht betroffen

Ich verwende asp.net MVC 4 und epplus als Nuget-Paket zum Exportieren meiner Daten in eine Excel-Datei. Ich mache das wie folgt:

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

Das Problem ist, dass, wenn ich die Datei herunterlade und sie in Excel 2016 öffne, die Schriftfamilie nicht betroffen ist, sondern im Feld mit dem Namen der Schriftart angezeigt wird. Wenn ich mich auf das Kombinationsfeld konzentriere und die Eingabetaste drücke, ist die Schriftfamilie betroffen.

Wie kann ich dieses Problem lösen?

8
Varan Sinayee

Versuche dies:

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;

Dies betrifft alle Zeilen und Spalten .