数据表的函数以逗号分隔的值

时间:2010-12-08 13:42:22

标签: c# visual-studio winforms function

我从我的一个函数

获取数据表返回类型

但由于我必须在多行文本框中显示它,所以我需要一个能够将数据表转换为逗号分隔值的函数,以便在多行文本框中显示。

可以建议我这样的功能,以满足我的需要。

1 个答案:

答案 0 :(得分:0)

我不得不在一段时间前写一篇。我写了我把它写成一个流(因为我将它保存到磁盘,但是将它更改为使用System.Text.StringBuilder(由于性能原因我将使用串联字符串)应该是微不足道的。

public static void ToCsv(Stream stream, DataTable dataTable, bool includeColumnHeaders, char valueDelimiter, char textQualifier, string rowDelimiter)
    {
        StreamWriter sw = new StreamWriter(stream);
        string valueFormatString = (textQualifier + "{0}" + textQualifier).Trim();

        if (includeColumnHeaders)
        {  
            for(int i = 0; i < dataTable.Columns.Count; i++)
            {
                sw.Write(String.Format(valueFormatString, dataTable.Columns[i].ColumnName.Replace(textQualifier.ToString(), textQualifier.ToString() + textQualifier.ToString())));

                if (i != dataTable.Columns.Count - 1)
                    sw.Write(valueDelimiter);
            }

            sw.Write(rowDelimiter);
        }

        for(int i = 0; i < dataTable.Rows.Count; i++)            
        {
            for (int j = 0; j < dataTable.Rows[i].ItemArray.Length; j++)
            {
                sw.Write(String.Format(valueFormatString, dataTable.Rows[i][j].ToString().Replace(textQualifier.ToString(), textQualifier.ToString() + textQualifier.ToString())));

                if(j != dataTable.Rows[i].ItemArray.Length - 1)
                    sw.Write(valueDelimiter);
            }
            sw.Write(rowDelimiter);
        }

        sw.Flush();
    }

HTH, 布赖恩