如何在 C# 中生成一个 Excel 字母向下旋转 header 90 度的文件?

How can I generate an Excel file with a 90 degree letter rotated down header in C#?

我正在开发一个人力资源应用程序,它需要显示一个工作环境 excel 报告,就像在这个 image.

中展示的那样

现在我正在寻求有关此主题的帮助,我正在使用 ClosedXML.Excel,目前我正在使用我自己创建的方法生成 Excel 文件,它输入 [=29] 的列表=] 并在 http 请求的响应中创建一个 excel 文件。这是代码:

public static bool ConvertToExcel<T>(IList<T> data, string excelName, string sheetName)
    {
        PropertyDescriptorCollection properties =

        TypeDescriptor.GetProperties(typeof(T));

        DataTable table = new DataTable();

        foreach (PropertyDescriptor prop in properties)
            table.Columns.Add(prop.Name.Replace("_"," "), Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);

        foreach (T item in data)
        {
            DataRow row = table.NewRow();
            foreach (PropertyDescriptor prop in properties)
                row[prop.Name.Replace("_", " ")] = prop.GetValue(item) ?? DBNull.Value;
            table.Rows.Add(row);
        }

        try
        {
            using (XLWorkbook wb = new XLWorkbook())
            {
                wb.Worksheets.Add(table, sheetName);

                System.Web.HttpContext.Current.Response.Clear();
                System.Web.HttpContext.Current.Response.Buffer = true;
                System.Web.HttpContext.Current.Response.Charset = "";
                string FileName = excelName + ".xlsx";

                System.Web.HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                System.Web.HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + FileName);
                using (MemoryStream MyMemoryStream = new MemoryStream())
                {
                    wb.SaveAs(MyMemoryStream);
                    MyMemoryStream.WriteTo(System.Web.HttpContext.Current.Response.OutputStream);
                    System.Web.HttpContext.Current.Response.Flush();
                    System.Web.HttpContext.Current.Response.End();
                }
            }
        }
        catch (Exception e) 
        {
            throw e;
            return false;
        }
        return true;
    }

因为boss的名字很长所以扩展了很多excel栏的一个简单的百分比,我想知道我是否可以实现向下旋转(90度)[=的字母28=]。可以用我当前的库 ClosedXML.Excel 实现吗?我想用同样的方法生成这份工作环境报告。

预先致谢:)

您可以使用对齐文本旋转样式来做到这一点:

cell.Style.Alignment.SetTextRotation(90);

谢谢@Raidri。

我修改了代码:

   wb.Worksheets.Add(table, sheetName);

至:

   var ws = wb.Worksheets.Add(table, sheetName);
   ws.Row(1).Style.Alignment.SetTextRotation(180);
   ws.Tables.FirstOrDefault().ShowAutoFilter = false;

这样文本向下旋转 90 度,我删除了过滤器。