/// <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;
});
}
}