C#で質問です
CSVファイルをドラッグアンドドロップすると
そのファイルの先頭行に1行任意の行を挿入するプログラムを作りたいのですが、
現在先頭ではなく末尾に挿入されてしまい、困っています
どなたかアドバイスをいただけないでしょうか?
現在書いているコードです↓
private void Form1_DragDrop(object sender,System.Windows.Forms.DragEventArgs e) { //コントロール内にドロップされたとき実行される //ドロップされたすべてのファイル名を取得する string[] fileName =(string[])e.Data.GetData(DataFormats.FileDrop, false); string str = fileName[0]; //ファイルのパスまるごと string FileName = Path.GetFileName(str);//ファイルの名称を抜き出す while (true) { //if (sr.ReadLine() == FileName) //ReadLineは1行取得次の行を取得しにいく if ("test.csv" == FileName) { //CSVデータをリストで用意 List<string> lines = new List<string>(); lines.Add("ファイル名,製品名"); //StreamWriterでファイルをオープンし、WriteLine でデータを1行づつファイルに書き込み using (StreamWriter sw = new StreamWriter(@"C:\Users\sa\Desktop\test.csv", true, Encoding.GetEncoding("shift-jis"))) { foreach (string line in lines) { sw.WriteLine(line); } } break; //ファイル名と行が一致すればブレイク } else if ("export_title.txt" == FileName) { break; //ファイル名と行が一致すればブレイク } } } }
}
2022/5/10 16:50
こちらでご教授いただき、
最終的にこのように解決しました
private void Form1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) { //コントロール内にドロップされたとき実行される //ドロップされたすべてのファイル名を取得する string[] fileName = (string[])e.Data.GetData(DataFormats.FileDrop, false); string str = fileName[0]; //ファイルのパスまるごと string FileName = Path.GetFileName(str);//ファイルの名称を抜き出す string nakami = System.IO.File.ReadAllText(str, Encoding.GetEncoding("shift-jis"));//ファイルの中身をすべて読み込む while (true) { if ("test.csv" == FileName) //●CSVのファイル名はファイルごとに変更すること { nakami = "1行目に挿入されるヘッダ行,title\r\n" + nakami; //★挿入内容 System.IO.File.WriteAllText(str, nakami, Encoding.GetEncoding("shift-jis"));//テキストファイルに上書き保存する MessageBox.Show("ヘッダの挿入が完了しました", "完了", MessageBoxButtons.OK, MessageBoxIcon.None); break; } else if ("export_title.csv" == FileName)//●CSVのファイル名はファイルごとに変更すること { nakami = "ここに任意の内容を記載1,ここに任意の内容を記載2\r\n" + nakami; //★挿入内容 System.IO.File.WriteAllText(str, nakami, Encoding.GetEncoding("shift-jis"));//テキストファイルに上書き保存する MessageBox.Show("ヘッダの挿入が完了しました", "完了", MessageBoxButtons.OK, MessageBoxIcon.None); break; } else if ("export_hedda.csv" == FileName)//●CSVのファイル名はファイルごとに変更すること { nakami = "新しい行です。,title\r\n" + nakami; //★挿入内容 System.IO.File.WriteAllText(str, nakami, Encoding.GetEncoding("shift-jis"));//テキストファイルに上書き保存する MessageBox.Show("ヘッダの挿入が完了しました", "完了", MessageBoxButtons.OK, MessageBoxIcon.None); break; } else { MessageBox.Show("該当するファイルのヘッダはありません", "エラー", MessageBoxButtons.OK, MessageBoxIcon.None); break; } } }
回答2件
あなたの回答
tips
プレビュー