1

次のような文字列があります。

"X","Y","Z"
"X2","Y2","Z2"

つまり、コンマで区切られた複数の異なる文字列値を含む改行で区切られた複数の行。

これらの値を次のようなデータテーブルに入力する関数を作成するにはどうすればよいですか:

"X" "Y" "Z"
"X2" "Y2" "Z2"

文字列内の任意の数の行と列に対して?

これが私がこれまでに持っているものです:

public static DataTable writeToDT(string data) //Write to datatable from string
    {
        DataTable dataTable = new DataTable();
        foreach (string header in csvHeader)
        {
            dataTable.Columns.Add(header);
        }
        using (StringReader reader = new StringReader(data))
        {
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                DataRow dataRow = dataTable.NewRow();
            }
        }
        return dataTable;
    }

csvheaderデータ内のヘッダーで既に埋められている配列はどこですか。
これにより、適切な量の行と列を持つ空のデータテーブルが作成されると思いますが、それを文字列データで埋める方法がわかりません。

前もって感謝します。

4

1 に答える 1

1

このようなものがうまくいくはずです。CSV の解析は解決済みの問題です。名前空間のTextFieldParserクラスusing Microsoft.VisualBasic.FileIO;(への参照を追加Microsoft.VisualBasic) がこれを実行できます。

public static DataTable WriteToDataTable(string data)
{
    DataTable dataTable = new DataTable();
    foreach (var header in csvHeader)
        dataTable.Columns.Add(header);

    using (var reader = new StringReader(data))
    {
        TextFieldParser csvParser = new TextFieldParser(reader) { HasFieldsEnclosedInQuotes = true, Delimiters = new string[] { "," } };

        while (!csvParser.EndOfData)
        {
            var dataTableRow = dataTable.NewRow();
            dataTableRow.ItemArray = csvParser.ReadFields();
            dataTable.Rows.Add(dataTableRow);
        }
    }
    return dataTable;
}
于 2015-01-31T16:53:55.343 に答える