2

csv ファイルを取り込み、読み取り、分離するコードを作成しようとしています。タイトルのない 4 つの列があります。私は何時間もオンラインで検索してきましたが、誰も答えを持っていないようです。読み込まれた後、デザインの一部であるため、非常に具体的にプルできるようにする必要があります。お早めにどうぞ!

4

3 に答える 3

6

あなたの質問は少し漠然としていますが、できる限り答えようとします。

CSV ファイルは (定義上) コンマ区切りの値を含むファイルです。ここで重要なのは、区切り文字としてコンマが使用されていることです。個人的には、別の区切り文字を使用すると、解析時の厄介さが軽減される傾向があることがわかりました。

次のテスト CSV ファイルを作成しました。

Column1,Column2,Column3,Column4
Row1Value1,Row1Value2,Row1Value3,Row1Value4
Row2Value1,Row2Value2,Row2Value3,Row2Value4
Row3Value1,Row3Value2,Row3Value3,Row3Value4
Row4Value1,Row4Value2,Row4Value3,Row4Value4
Row5Value1,Row5Value2,Row5Value3,Row5Value4

次に、そのファイルをいくつかの単純な構造に読み取り、後で操作できるようにするコードを示します。列と行 (および値) のクラスを作成して、このコードを拡張することができます。

        string sFileContents = "";

        using (StreamReader oStreamReader = new StreamReader(File.OpenRead("Test.csv")))
        {
            sFileContents = oStreamReader.ReadToEnd();
        }

        List<string[]> oCsvList = new List<string[]>();

        string[] sFileLines = sFileContents.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
        foreach (string sFileLine in sFileLines)
        {
            oCsvList.Add(sFileLine.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries));
        }

        int iColumnNumber = 0;
        int iRowNumber = 0;

        Console.WriteLine("Column{0}, Row{1} = \"{2}\"", iColumnNumber, iRowNumber, oCsvList[iColumnNumber][iRowNumber]);

        iColumnNumber = 4;
        iRowNumber = 2;

        Console.WriteLine("Column{0}, Row{1} = \"{2}\"", iColumnNumber, iRowNumber, oCsvList[iColumnNumber][iRowNumber]);

値は列番号、次に行番号によってアクセスされることに注意してください。

これが役立つことを願っています。

于 2012-08-24T05:40:41.557 に答える
0

あなたがする必要があるのは、単純にそれを byte[] 配列に変換し、string[builder?] に戻すことだけです。次に、各エントリを分離し、そのように解析します。

http://www.digitalcoding.com/Code-Snippets/C-Sharp/C-Code-Snippet-Convert-file-to-byte-array.html

文字列に変換するには:

    // C# to convert a byte array to a string.
byte [] dBytes = ...
string str;
System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
str = enc.GetString(dBytes);

パーサーを作成する必要があることを理解する必要があります。基本的にコロンをデータに分割して、Yahoo Stocks を取り込むために 1 つ作成しました。

于 2012-08-24T05:37:27.717 に答える