在我的MVC 5站点中,我有一个稳定的导出到Excel功能,但用户要求我使列标题“用户友好”.

在我的模型中,我使用[display(Name =“Friendly Column Name”)]注释,它们在View页面上按预期显示,但是当用户触发导出功能时它们不会转移到导出的Excel文件.相反,出现真实姓名.

我知道我可以通过除LoadFromCollection之外的其他方法加载工作表单元格,但我想知道是否仍然可以使用LoadFromCollection并使用模型的display(Name())注释.

这就是我目前拥有的:

public ActionResult ExportToExcel(string _selectedCampus)
    {
        // This is the query result set the user wishes to export to file.
        IEnumerable<Mia1aSec1FayExport> exportQuery = unitOfWork
            .Mia1aSec1FayRepository.Get().Select(n => new Mia1aSec1FayExport
        {
            Campus = n.Campus,StudentName = n.StudentName,CreditsBeforeSchoolYear = n.CreditsBeforeSchoolYear,CreditsDuringSemester1 = n.CreditsDuringSemester1,EligibleFayCount = n.EligibleFayCount,EligibleFayMeetingGoal = n.EligibleFayMeetingGoal
        }).Where(n => n.Campus == _selectedCampus).OrderBy(n => n.StudentName)
        .AsEnumerable();

        // The current iteration saves the table contents,but without the   
        // [display{Name"xxx)] annotation from the model.

        byte[] response;   
        using (var excelFile = new ExcelPackage())
        {
            excelFile.Workbook.Properties.Title = "MIA 1A (i) Eligible FAY Students";                
            var worksheet = excelFile.Workbook.Worksheets.Add("Sheet1");                   
            worksheet.Cells["A1"]
                .LoadFromCollection(Collection: exportQuery,PrintHeaders: true);
            response = excelFile.GetAsByteArray();
        }

        // Save dialog appears through browser for user to save file as desired.
        return File(response,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","Mia1aSec1Fay.xlsx");
    }

一种解决方法是覆盖标题单元格,但这是不可取的,原因有两个:(1)我已经在模型中将列名称写为注释,这意味着我现在在两个不同的地方写了相同的信息,并且(2) )我必须手动保持信息同步,以防用户需要更多更改,我可能会忘记这样做.

// This loads teh table as seen by the user in the index view.
            worksheet.Cells["A1"].LoadFromCollection(Collection: exportQuery,PrintHeaders: true);

            // Workaround overwrite header cells,as I'm not able to use display Name annotation.
            worksheet.Cells[1,1].Value = "Campus";
            worksheet.Cells[1,2].Value = "Student Name";
            worksheet.Cells[1,3].Value = "Credits Before SY";
            worksheet.Cells[1,4].Value = "Credits During Semester 1";
            worksheet.Cells[1,5].Value = "Legible Population";
            worksheet.Cells[1,6].Value = "Eligible Students Earning 2+ Credits";

在写这篇文章时,我真的希望这不是唯一的选择.必须有一种方法可以在标题中写入显示名称值而不是真实名称.

解决方法

LoadFromCollection仅响应displayName或Description属性,而不响应display属性.

因此,您可以尝试将其中一个属性添加到当前属性中.

[displayName("Friendly Column Name")]
[display(Name = "Friendly Column Name")]
public string StudentName { get; set; }

还要确保在调用LoadFromCollection时将PrintHeaders参数设置为true,但是您说真实的名称会出现,因此可能已经很好了.

c# – 如何使用[Display(Name =“”)]作为LoadFromCollection的列标题的更多相关文章

  1. 使用Html5多媒体实现微信语音功能

    这篇文章主要介绍了使用Html5多媒体实现微信语音功能,需要的朋友可以参考下

  2. canvas 实现 github404动态效果的示例代码

    本篇文章主要介绍了canvas 实现 github404动态效果的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  3. iOS7 Safari中的全屏模式

    我正在使用SenchaTouch开发移动网站.在iOS7Safari中,我无法创建顶级地址栏和下面的工具栏消失了.Sencha过去常常处理iOS6,但iOS7最近的一些变化导致了这个问题.http://java.dzone.com/articles/safari-ios-7-and-html5我阅读了上面的链接&对于HTML5游戏而言,这似乎也是一个问题.一些其他应用程序.适用于iOS6的旧win

  4. 升级到iOS 11.3之后,每个apple-mobile-web-app都无法显示全屏幕

    我有一个包含元的Web应用程序在iOS11.3之前,当“添加到主屏幕”时,它将像没有导航栏的独立应用程序一样打开.11.3之后,它现在打开浏览器中的导航栏.解决方法经过数小时的故障排除后,我发现以下可能对其他人有所帮助.对于Android/Chrome兼容性,我的html文件中已经包含以下内容:manifest.json没有“display”:“standalone”条目,只是定义了图标和名称.似

  5. 用swift开发计算器

    来自:https://itunes.apple.com/us/course/developing-ios-8-apps-swift/id961180099

  6. swift做一个简单的计算器

  7. swift 类型转换

    )!.doubleValue或者(display.text!

  8. android – WINDOW_SERVICE无法解析为变量

    我认为WINDOW_SERVICE应该是android.content.Context中定义的常量.http://developer.android.com/reference/android/content/Context.html#WINDOW_SERVICE当我在下面的代码段中使用它时,它会抛出一个错误,说它无法作为变量解析.显示display=((WindowManager)getSyst

  9. 清除浮动的几种方法详解

    本文主要介绍了清除浮动的几种方法。具有一定的参考价值,下面跟着小编一起来看下吧

  10. thinkphp3.x中display方法及show方法的用法实例

    这篇文章主要介绍了thinkphp3.x中display方法及show方法的用法,结合实例形式分析了thinkPHP3.x模板的功能、定义、赋值、渲染及输出等技巧,需要的朋友可以参考下

随机推荐

  1. c# – (wpf)Application.Current.Resources vs FindResource

    所以,我正在使用C#中的WPF创建一个GUI.它看起来像这样:它现在还没有完成.这两行是我尝试制作一种数据表,它们在XAML中是硬编码的.现在,我正在C#中实现添加新的水果按钮功能.我在XAML中有以下样式来控制行的背景图像应该是什么样子:因此,在代码中,我为每列col0,col1和col2创建一个图像,如果我使用以下代码,它添加了一个如下所示的新行:如你所见,它不太正确……为什么一个似乎忽略了一些属性而另一个没有?

  2. c# – 绑定DataGridTemplateColumn

    似乎我已经打了个墙,试图在DataGrid上使用DataTemplates.我想要做的是使用一个模板来显示每个单元格的两行文本.但是似乎无法以任何方式绑定列.以下代码希望显示我想做的事情.注意每个列的绑定:模板列没有这样的东西,因此,这个xaml不可能工作.我注定要将整个DataTemplate复制到每个列,只是对每个副本都有不同的约束?解决方法我不完全确定你想要做什么,但如果您需要获取整行的DataContext,可以使用RelativeSource绑定来移动视觉树.像这样:

  3. c# – 学习设计模式的资源

    最近我来到了这个设计模式的概念,并对此感到非常热情.你能建议一些帮助我深入设计模式的资源吗?

  4. c# – 是否有支持嵌入HTML页面的跨操作系统GUI框架?

    我想开发一个桌面应用程序来使用跨系统,是否有一个GUI框架,允许我为所有3个平台编写一次代码,并具有完全可脚本化的嵌入式Web组件?我需要它有一个API来在应用程序和网页之间进行交流.我知道C#,JavaScript和一些python.解决方法Qt有这样的事情QWebView.

  5. c# – 通过字符串在对象图中查找属性

    我试图使用任意字符串访问嵌套类结构的各个部分.给出以下(设计的)类:我想要从Person对象的一个实例的“PersonsAddress.HousePhone.Number”获取对象.目前我正在使用反思来做一些简单的递归查找,但是我希望有一些忍者有更好的想法.作为参考,这里是我开发的(crappy)方法:解决方法您可以简单地使用标准的.NETDataBinder.EvalMethod,像这样:

  6. c# – 文件下载后更新页面

    FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7&displaylang=en&pf=true它呈现该页面,然后使用以下元刷新标签来实际向用户提供要下载的文件:你可能需要在你的应用程序中做类似的事情.但是,如果您真的有兴趣在文件完全下载后执行某些操作,那么您的运气不佳,因为没有任何事件可以与浏览器进行通信.执行此操作的唯一方法是上传附件时使用的AJAXupload.

  7. c# – 如何在每个机器应用程序中实现单个实例?

    我必须限制我的.net4WPF应用程序,以便每台机器只能运行一次.请注意,我说每个机器,而不是每个会话.我使用一个简单的互斥体实现单实例应用程序,直到现在,但不幸的是,这样一个互斥是每个会话.有没有办法创建机器互连,还是有其他解决方案来实现每个机器应用程序的单个实例?

  8. c# – WCF和多个主机头

    我的雇主网站有多个主机名,都是同一个服务器,我们只是显示不同的皮肤来进行品牌宣传.不幸的是,在这种情况下,WCF似乎不能很好地工作.我试过overridingthedefaulthostwithacustomhostfactory.这不是一个可以接受的解决方案,因为它需要从所有主机工作,而不仅仅是1.我也看过thisblogpost,但是我无法让它工作,或者不是为了解决我的问题.我得到的错误是“这

  9. c# – ASP.NET MVC模型绑定与表单元素名称中的虚线

    我一直在搜索互联网,试图找到一种方式来容纳我的表单元素的破折号到ASP.NET的控制器在MVC2,3或甚至4中的默认模型绑定行为.作为一名前端开发人员,我更喜欢在我的CSS中使用camelCase或下划线进行破折号.在我的标记中,我想要做的是这样的:在控制器中,我会传入一个C#对象,看起来像这样:有没有办法通过一些正则表达式或其他行为来扩展Controller类来适应这种情况?我讨厌这样的事实,我必须这样做:甚至这个:思考?

  10. c# – 用户界面设计工具

    我正在寻找一个用户界面设计工具来显示文档中可能的GUI.我不能生成代码.我知道MicrosoftVisio提供了一个功能.但有什么办法吗?您使用哪种软件可视化GUI?

返回
顶部