C# DataTableー>CSVー>DB

        /// <summary>
        /// DataTableー>CSV
        /// </summary>
        private void ExportToCsv()
        {
            FileStream stream = null;
            StreamWriter sw = null;
            try
            {
                this.Invoke(
                         (MethodInvoker)delegate()
                         {
                             this.CSVOutPutBtton.Enabled = false;
                         });
             
                // データを取得
                this.startEndDataTm = new DBAccessTm();
                this.T_StartEndTB = this.startEndDataTm.SelecStartEndData();
                if (this.T_StartEndTB == null || this.T_StartEndTB.Rows.Count == 0)
                {
                    return;
                }
                // CSVファイルオープン
                string FiledName = "Datas";
                string path = Path.Combine(FiledName, "T_StartEndDataTime_CSV_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv");

                if (!Directory.Exists(FiledName))
                {
                    Directory.CreateDirectory(FiledName);
                }
                stream = new FileStream(path, FileMode.Create);
                sw = new StreamWriter(stream, Encoding.GetEncoding("SHIFT-JIS"));

                // ヘッダ部
                int i = 0;
                StringBuilder strColu = new StringBuilder();
                for (i = 0; i <= T_StartEndTB.Columns.Count - 1; i++)
                {
                    strColu.Append(T_StartEndTB.Columns[i].ColumnName.ToString());
                    strColu.Append(",");
                }
                strColu.Remove(strColu.Length - 1, 1);

                sw.WriteLine(strColu);

                // データ出力
                int Rows = this.T_StartEndTB.Rows.Count;
                int Columns = this.T_StartEndTB.Columns.Count;

                for (int r = 0; r <= Rows - 1; r++)
                {
                    for (int c = 0; c <= Columns - 1; c++)
                    {
                        // DataGridViewのセルのデータ取得
                        String data = "";
                        if (this.T_StartEndTB.Rows[r][c] != null)
                        {
                            data = this.T_StartEndTB.Rows[r][c].ToString();
                        }
                        if (c < Columns - 1)
                        {
                            data = data + ",";
                        }
                        // CSVファイル書込
                        sw.Write(data);
                    }
                    sw.Write("\n");
                }
                // CSVファイルクローズ
                stream.Close();
                MessageBox.Show("CSVファイルに出力完了しました。");      
                this.Invoke(
                     (MethodInvoker)delegate()
                     {
                         this.CSVOutPutBtton.Enabled = true;
                         this.label1.Text = Path.Combine(Application.StartupPath , path);
                     });
               
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                this.Invoke(
                  (MethodInvoker)delegate()
                  {
                      this.CSVOutPutBtton.Enabled = true;
                  });
            }
        }

/CSVー>DB

 

       /// <summary>
        /// CSV登録ボタン処理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CSVDataInsertButton_Click(object sender, EventArgs e)
        {
            string path = Path.Combine(Application.StartupPath, "Datas");
            if(!Directory.Exists(path))
            {
                MessageBox.Show("先にCSVファイル出力してください。");
                return;
            }
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.InitialDirectory = path;
            ofd.Filter = "CSVファイル|*.CSV";
            if (ofd.ShowDialog() == DialogResult.Cancel)
            {
                return;
            }
            else
            {
                this.startEndDataTm = new DBAccessTm();
                string fileName = ofd.FileName;
                this.ParStart = new ParameterizedThreadStart(CsvDataInput);
                this.CsvInputThread = new Thread(ParStart);
                this.CsvInputThread.IsBackground = true;
                this.CsvInputThread.Start(fileName);
            }
        }

       /// <summary>
        /// データをT_StartendDataTempに登録
        /// </summary>
        /// <param name="fileName">CSV保存パス</param>
        public void CsvDataInput(object fileName)
        {
            string strLine = "";
            int i = 0;
            bool endFlg = false;

            this.Invoke(
                 (MethodInvoker)delegate()
                 {
                     this.CSVDataInsertButton.Enabled = false;
                 });
          
            try
            {
                FileStream fs = new FileStream(fileName.ToString(), FileMode.Open, FileAccess.Read);
                StreamReader sr = new StreamReader(fs, Encoding.Default);
                while ((strLine = sr.ReadLine()) != null)
                {
                    if (endFlg == true)
                    {
                        break;
                    }
                    if (i == 0)
                    {
                        i++;
                        continue;
                    }
                    var sp = strLine.Split(',');
                    string setValue = "";

                    for (int s = 0; s < sp.Length; s++)
                    {
                        if (s == 0)
                        {
                            continue;
                        }
                             
                        // 空行時終了
                        if (s == 1 && sp[s] == "")
                        {
                            endFlg = true;
                            break;
                        }
                        setValue = setValue + string.Format("'{0}',", sp[s]);
                    }
                    setValue = setValue.TrimEnd(',');

                    this.startEndDataTm.UpdateStartEndDateTemp(setValue);
                    //Thread.Sleep(1000);
                    i++;
                }

                sr.Close();
                MessageBox.Show("データ全文登録完了しました。");
                this.Invoke(
                 (MethodInvoker)delegate()
                 {
                     this.CSVDataInsertButton.Enabled = true;
                 });
             
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                this.Invoke(
                     (MethodInvoker)delegate()
                     {
                         this.CSVDataInsertButton.Enabled = true;
                     });
            }

        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值