前提・実現したいこと
ボタンをクリックした際にgridviewに表示された表から選択した行(複数可)の内容をCSVに出力したい。
発生している問題・エラーメッセージ
1.Button1_Clickのイベントを起こした際にgrid内の選択されているセルを抜き出すという動作を行うことができない。
2.抜き出したセルの内容をstreamwriterに出力する部分に一部不具合がある
該当のソースコード
//load時にgrdListにSQLを表示
private void Form1_Load(object sender, EventArgs e)
{
MySqlConnection MySQLcn;
string sSQL = string.Empty;
try
{
MySQLcn = new MySqlConnection(ConfigurationManager.ConnectionStrings["mysql"].ConnectionString);
MySQLcn.Open();
//ここにSQL文が入る
MySqlDataAdapter da = new MySqlDataAdapter(sSQL, MySQLcn); DataTable dt = new DataTable(); da.Fill(dt); grdList.DataSource = dt; //gridviewを最大化する grdList.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; grdList.SelectionMode = DataGridViewSelectionMode.FullRowSelect; //DataGridView1のセルを読み取り専用にする grdList.ReadOnly = true; MySQLcn.Close(); } catch { MessageBox.Show("データ読み込みに失敗しました。", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } }
private void Button1_Click(object sender, EventArgs e)
{
//1:ここでgrid内で選択したセルを持っていきたい
}
//csvへの書き込み
using (StreamWriter sw = new StreamWriter(@"\出力test.csv", false,System.Text.Encoding.GetEncoding("shift_jis")))
{
while (セルの中身)
{
string row = string.Empty;
//今回行数は15
for (int i = 0; i < 15; i++)
{
row[i] = (セルの中身.IsDBNull(i)) ) ? "" : reader.GetString(i).ToString();
if (0 == i) { row += (セルの中身.IsDBNull(i)) ? "" : reader.GetString(i).ToString(); } else { row += (セルの中身.IsDBNull(i)) ? "," : "," + reader.GetString(i).ToString(); } } sw.WriteLine(row); } }
### 試したこと ### 補足情報(FW/ツールのバージョンなど) visualstudio2019 WindowsForms .NET framework4.7.2
回答1件
あなたの回答
tips
プレビュー