将ListView导出为CSV

时间:2009-06-17 17:45:09

标签: c# winforms listview csv

是否有人知道从ListView导出的体面的CSV导出工具?我需要更新项目并进行蠕变,这意味着我没有时间自己实现最终功能。

2 个答案:

答案 0 :(得分:36)

这不是我要说的大功能,除非你有一些非常奇怪的要求......但在这种情况下,可能没有任何外部工具可以帮助你。

以下是我将如何解决问题:

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

答案 1 :(得分:2)

FileHelpers是一个不错的图书馆,可能只是你今天最好的朋友