出口的ListView到CSV [英] Export ListView to CSV

查看:293
本文介绍了出口的ListView到CSV的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是任何人都知道一个体面的CSV导出工具从一个ListView出口?我在疯狂地获取项目更新出来,功能蔓延意味着我没有时间让这最后的迫切功能来实现自己。

Is anyone aware of a decent CSV export tool for exporting from a ListView? I'm in a mad rush to get a project update out and feature creep means I don't have time to get this final urgent feature implemented myself.

推荐答案

这不是一个很大的功能,我会说,除非你有一些非常奇怪的要求...但在这种情况下,也许没有外部工具可以帮助您反正。

That's not a big feature I'd say, unless you have some very odd requirements... but in this case, probably, no external tool can help you anyway.

下面是我会怎样处理这个问题:

Here is how I would approach the problem:

class ListViewToCSV
{
    public static void ListViewToCSV(ListView listView, string filePath, bool includeHidden)
    {
        //make header string
        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 (ListViewItem 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 static 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到CSV的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆