前提・実現したいこと
csv形式のファイル保存
ここに質問の内容を詳しく書いてください。
ボタンをクリックしたらダイアログを開きDataGridViewに表示中の表をcsv形式で保存したい
■■な機能を実装中に以下のエラーメッセージが発生しました。
ダイアログ開いて名前入力までは動くんですが保存ボタンを押すと
System.UnauthoridAccessException:'パス’C:¥Users¥c.3¥Download’へのアクセスが拒否されました。'
該当のソースコード
Encoding encoding = Encoding.GetEncoding("Shift_JIS"); using (StreamWriter writer = new StreamWriter(@"C:\Users\c.3\Downloads", false,encoding))
C# ソースコード
private void button1_Click(object sender, EventArgs e)
{
SaveFileDialog saveFile = new SaveFileDialog
{
Title = "ファイルを保存する",
InitialDirectory = @"C:\Users\c.3\Downloads",
FileName = @"Result.csv",
Filter = "CSV(カンマ区切り)|*.csv"
};
DialogResult dialogResult = saveFile.ShowDialog(); if(dialogResult==DialogResult.OK) { string filename = saveFile.FileName; } Encoding encoding = Encoding.GetEncoding("Shift_JIS"); using (StreamWriter writer = new StreamWriter(@"C:\Users\c.3\Downloads", false,encoding)) { //行と列の変数作成 int row = dataGridView1.RowCount; int colunms = dataGridView1.ColumnCount; if (dataGridView1.AllowUserToAddRows == true) { row = row - 1; } List<string> strList; strList = new List<string>(); //ヘッダー記述 for(int c = 0; c< colunms; c++) { strList.Add(dataGridView1.Columns[c].HeaderCell.FormattedValue.ToString()); } //配列変換 string[] strHeader = strList.ToArray(); //csv変換 string strCsvData2 = string.Join(",",strHeader); writer.WriteLine(strCsvData2); //行データを回す for(int i = 0; i < row; i++) { //リスト初期化 strList = new List<string>(); //列データを回す for(int j=0;j < colunms; j++) { //列と行を追加 strList.Add(dataGridView1[ j, i ].Value.ToString()); } //配列に変換 string[] strArray = strList.ToArray(); //csv変換 string strCsvData = string.Join(",",strArray); writer.WriteLine(strCsvData); } }
試したこと
ここに問題に対して試したことを記載してください。
urlの記述ミスの確認 ネットに出ているエラー対処法
補足情報(FW/ツールのバージョンなど)
visualStudio2017
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー