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

时间:2018-10-17 01:58:25

标签: c# closedxml

我正在开发一个人力资源应用程序,该应用程序需要显示一个工作环境excel报告,如本image中所示。

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

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

由于老板的名字很长,所以它在excel列中扩展了一个简单的百分比,我想知道是否可以实现将标题的字母向下旋转(90度)。我当前的库ClosedXML.Excel可以实现吗?我想使用相同的方法来生成此工作环境报告。

预先感谢:)

2 个答案:

答案 0 :(得分:0)

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

cell.Style.Alignment.SetTextRotation(90);

答案 1 :(得分:0)

感谢@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度,然后删除过滤器。