如何将模型对象提取到.csv文件中

时间:2012-12-23 10:11:18

标签: javascript jquery asp.net asp.net-mvc asp.net-mvc-3

我有以下观点: -

@model IEnumerable<MvcApplication4.Models.customers> 

@{ 
    ViewBag.Title = "customer"; 
} 

<h3>Avialble cusotmer</h3> 
<table id ="avilalbe"> 
    <tr> 
        <th> 
           @Html.CheckBox("ORG_NAME ", true) NAME 
        </th> 
<th> 
           @Html.CheckBox("description ", true) Description 
        </th> 
    </tr> 

@foreach (var item in Model) { 
    <tr> 


        <td> 
            @Html.DisplayFor(modelItem => item.customer_NAME) 
        </td> 
<td> 
            @Html.DisplayFor(modelItem => item.description) 
        </td> 

    </tr> 
} 

   <a href=""> Extract To Excel </a>

如何根据复选框中的用户选择将模型数据提取到.csv中(要么包含名称和描述列,要么只包含其中一个)。

2 个答案:

答案 0 :(得分:0)

如果我理解这个问题 - 只需使用对象转储器来解析值和名称,但说实话,我无法100%准确地告诉您上述问题的内容。

Objectdumper可在此处获得: http://blogs.msdn.com/b/ericwhite/archive/2008/08/14/object-dumper-an-invaluable-tool-for-writing-code-in-the-functional-programming-style.aspx

答案 1 :(得分:0)

创建一个方法(类似的东西)

private static string GetCsvString(IEnumerable<Customer> customers, string separator, params string[] fields)
{
    var csvString = new StringBuilder();
    var propertyInfos = typeof (Customer).GetProperties().Where(p => fields.Contains(p.Name)).ToList();
    foreach (var customer in customers)
    {
        var currentCustomer = customer;
        csvString.AppendLine(string.Join(separator, propertyInfos.Select(p => p.GetValue(currentCustomer, null).ToString())));
    }

    return csvString.ToString();
}

然后使用它:

var csvString = GetCsvString(yourSetOfCustomers, ";", "name", "description");
File.WriteAllText("yourPath.csv", csvString);

如果您只需要说明,请致电:

GetCsvString(yourSetOfCustomers, ";", "description");

我假设您知道如何识别您需要的字段(根据您对我的评论的回答)。希望你明白了。