csv ファイルを取り込み、読み取り、分離するコードを作成しようとしています。タイトルのない 4 つの列があります。私は何時間もオンラインで検索してきましたが、誰も答えを持っていないようです。読み込まれた後、デザインの一部であるため、非常に具体的にプルできるようにする必要があります。お早めにどうぞ!
3 に答える
あなたの質問は少し漠然としていますが、できる限り答えようとします。
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]);
値は列番号、次に行番号によってアクセスされることに注意してください。
これが役立つことを願っています。
あなたがする必要があるのは、単純にそれを 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 つ作成しました。