【问题标题】:Copy listview with fewer columns复制具有较少列的列表视图
【发布时间】:2011-11-03 19:20:41
【问题描述】:

我的 asp 页面上有一个列表视图,我需要将它导出到代码背后的 excel (c#) 中。但是我不希望所有列都被导出。

是否可以将 ListView 复制到具有更少列的新 ListView 对象中? 还是有其他方法可以将列数较少的列表视图导出到 excel 中?

这就是我在后面的代码中将代码导出到 excel 的方式:

protected void ExportToExcel(object sender, EventArgs e)
{   
    string attachment = "attachment; filename=MyData.xls";
    Response.ClearContent();
    Response.AddHeader("content-disposition", attachment);
    Response.ContentType = "application/ms-excel";
    Response.ContentEncoding = Encoding.Unicode;
    Response.BinaryWrite(Encoding.Unicode.GetPreamble());
    StringWriter stw = new StringWriter();
    HtmlTextWriter htextw = new HtmlTextWriter(stw);                
    // How can I render myListView with fewer columns?
    myListView.RenderControl(htextw);
    Response.Write(stw.ToString());
    Response.End();
}

提前致谢,

【问题讨论】:

  • 如何导出内容?
  • 嗨,我在问题中添加了代码。

标签: c# asp.net excel listview


【解决方案1】:
class ListViewToCSV
{
    public static void ListViewToCSV(ListView listView, string filePath, bool includeHidden)
    {
        //make header srting
        StringBuilder result = new StringBuilder();
        WriteCSVRow(result, listView.Columns.Count, i => includeHidden || listView.Columns[i].Width > 0, i => listView.Columns[i].Text);

        //export data rows
        foreach (var listItem in listView.Items)
            WriteCSVRow(result, listView.Columns.Count, i => includeHidden || listView.Columns[i].Width > 0, i => listItem.SubItems[i].Text);

        File.WriteAllText(filePath, result.ToString());
    }

    private void WriteCSVRow(StringBuilder result, int itemsCount, Func<int, bool> isColumnNeeded, Func<int, string> columnValue)
    {
        bool isFirstTime = true;
        for (int i = 0; i < itemsCount; i++)
        {
            if (!isColumnNeeded(i))
                continue;

            if (!isFirstTime)
                result.Append(",");
            isFirstTime = false;

            result.Append(String.Format("\"{0}\"", columnValue(i)));
        }
        result.AppendLine();
    }
}

【讨论】:

  • 感谢您的快速回答。 ListView 对象似乎无法识别 '.Columns' 我收到此错误:System.Web.UI.WebControls.ListView does not contain a definition for Columns and no extension method Columns accepting a first argument of type System.Web.UI.WebControls.ListView could be found (are you missing a using directive or an assembly reference?) 知道为什么吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-02
  • 1970-01-01
  • 2011-03-03
  • 1970-01-01
  • 1970-01-01
  • 2012-06-16
相关资源
最近更新 更多