DataTable - peace098beat/windows_applicaciton GitHub Wiki

CSVからデータテーブルへ登録

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace DataSetView
{
    public partial class DataSetForm : Form
    {
        // データテーブル
        DataTable datatable = new DataTable();

        // コンストラクタ
        public DataSetForm()
        {
            InitializeComponent();

            // DataGridViewにデータセットを設定
            dataGridView1.DataSource = datatable;

            // ListBoxにデータセットの設定
            listBox1.DataSource = datatable;

        }

        private void csvを読み込むToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // datagridをcsvからロード
            OpenFileDialog csvOpen = new OpenFileDialog();
            csvOpen.Filter = "CSV File (*.csv)|*.csv";

            if (csvOpen.ShowDialog() != DialogResult.OK) return;

            // datasetにcsvの内容を登録
            SetDatasetFromCSV(csvOpen.FileName);
        }

        // CSVからDataTableへ登録
        private void SetDatasetFromCSV(string csvfilepath)
        {
            // csv load
            Microsoft.VisualBasic.FileIO.TextFieldParser parser =
                new Microsoft.VisualBasic.FileIO.TextFieldParser(csvfilepath, Encoding.GetEncoding("Shift_JIS"));

            parser.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited;
            parser.SetDelimiters(","); // 区切り文字はコンマ


            bool IsHeader = true;
            while (!parser.EndOfData)
            {
                string[] row = parser.ReadFields(); // 1行読み込み


                if (IsHeader)
                {
                    for (int i = 0; i < row.Length; i++)
                    {
                        datatable.Columns.Add(new DataColumn("col" + i.ToString()));
                    }
                    IsHeader = false;
                }

                // 読み込んだデータ(1行をDataGridViewに表示する)
                DataRow InsertRow = datatable.NewRow();

                for (int i = 0; i < row.Length; i++)
                {
                    InsertRow["col" + i.ToString()] = row[i].ToString(); ;
                }
                datatable.Rows.Add(InsertRow);
            }

            // ListBoxにデータセットの設定 (再設定が必要)
            listBox1.DisplayMember = "col1";
            listBox1.ValueMember = "col2";

            // END

        }
    }
}