どっとねっとふぁん

C# Tips And Samples
in 検索

23.2次元配列をCSVデータにする

最新の投稿は、投稿日時: 06-22-2005, 4:22 午後 投稿者: ono です。スレッドには 0 件の返答があります。
投稿のソート: 前へ 次へ
  •  06-22-2005, 4:22 午後 32

    23.2次元配列をCSVデータにする

    2次元の配列に格納されているデータをCSV形式に変換するサンプルです。

    -------------------------------------------------------
    using System;
    using System.IO;
    using System.Text;
    
    public class ArrayUtil
    {
        public static void ToCSV(Array dArray)
        {
            if(dArray.Rank!=2)
                throw new ArgumentException("配列が2次元ではありません");
    
            for(int i=0; i<dArray.GetLength(0);i++){
                for(int j=0;j<dArray.GetLength(1);j++)
                {
                    Console.Write(dArray.GetValue(new int[] {i, j}));
                    if(j==dArray.GetLength(1)-1)
                        Console.WriteLine("");
                    else
                        Console.Write(",");
                }
            }
        }
    
        public static void ToCSV(Array dArray, string fileName)
        {
            using(StreamWriter sw = new StreamWriter(fileName, false, Encoding.GetEncoding("Shift-JIS")))
            {
                Console.SetOut(sw);
                ToCSV(dArray);
                StreamWriter standardOutput = new StreamWriter(Console.OpenStandardOutput(), Encoding.GetEncoding("Shift-JIS"));
                standardOutput.AutoFlush = true;
                Console.SetOut(standardOutput);
            }
        }
    }
    
    -------------------------------------------------------

    このサンプルを利用するには、たとえば次のように2次元の配列を引数として渡すだけでOKです。

    -------------------------------------------------------
    using System;
    
    class ArrayToCSVSample
    {
        public static void Main()
        {
    
            int [,] intArray = new int[4, 3];
    
            intArray[0, 0] = 1;
            intArray[0, 1] = 2;
            intArray[1, 0] = 3;
    
            ArrayUtil.ToCSV(intArray);
    
        }
    }
    
    -------------------------------------------------------

    CSV形式のデータをファイルに保存するのは、配列とファイル名を引数として渡すだけです。

    -------------------------------------------------------
    using System;
    
    class ArrayToCSVSample
    {
        public static void Main()
        {
    
            double [,] doubleArray = new double[10, 20];
    
            doubleArray[0, 0] = 1;
            doubleArray[0, 1] = 2.5;
            doubleArray[1, 0] = 3.324;
    
            ArrayUtil.ToCSV(doubleArray, "test.csv");
    
        }
    }
    
    -------------------------------------------------------

    int型の配列でも、double型の配列でも2次元の配列であれば対応しています。
    もちろん、string型の配列も扱えます。
    また、データの数の制限もありません。
    データを集計して表を作成する、といった用途では使えるところがあるかと思います。


    あおい情報システム株式会社
     小野修司(どっとねっとふぁん)
RSS ニュースフィードで参照
SkinName:iroha_CS2
Powered by Community Server, by Telligent Systems