質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

Dialogflow

Dialogflowは、Googleが提供している自然言語対話プラットフォーム。音声入力で自然言語の解析を行ってくれる機能で、対話型アプリを簡単に作成することが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

6725閲覧

c#でDataGridViewの表をcsv形式でファイル保存

退会済みユーザー

退会済みユーザー

総合スコア0

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

Dialogflow

Dialogflowは、Googleが提供している自然言語対話プラットフォーム。音声入力で自然言語の解析を行ってくれる機能で、対話型アプリを簡単に作成することが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2020/08/22 08:32

編集2020/08/22 08:56

前提・実現したいこと

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
ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/08/22 08:39

エラーメッセージとコードのパスが違ってますが、どっちがホンマなんでしょうか
退会済みユーザー

退会済みユーザー

2020/08/22 08:48

すみません パスのところは書き換えミスで動作させている時は同じものを入れてあります
guest

回答1

0

ベストアンサー

C#

1using (StreamWriter writer = new StreamWriter(@"C:\Users\c.3\Downloads", false,encoding))

でStreamWriter に渡しているパスがフォルダだからエラーになるのではないでしょうか。

投稿2020/08/22 08:43

編集2020/08/22 10:17
KoichiSugiyama

総合スコア3041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/08/22 08:51

すみません今学習中でして、パスがフォルダだとアクセスが拒否されるのですか?
y_waiwai

2020/08/22 08:59

ファイルに書き込もうとしてるのに、フォルダを指定してどーすんねん、とC#さんはおっしゃってますよ
退会済みユーザー

退会済みユーザー

2020/08/22 09:19 編集

なるほど。 ファイルをdesktopに保存したい場合はどう書き換えればいいのでしょうか、、? using (StreamWriter writer = new StreamWriter(@"C:\Users\c.3\Downloads¥save.csv", false,encoding))
y_waiwai

2020/08/22 09:20

そこからですか。。 デスクトップにあなたが作りたいと思うファイルを、実際に作ってみましょう そして、そのファイルを、Shift押しながら右クリックすると、パスのコピーという項目が出てきます それで、どういうパスになるか見てみればどうでしょうか。
Zuishin

2020/08/22 09:24

デスクトップのパスは Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)) で取得できます。System.IO.Path.Combine() を使ってデスクトップのパスとファイル名をつないでください。そうするとデスクトップ上のファイルのパスになります。
退会済みユーザー

退会済みユーザー

2020/08/22 09:26

すみません ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問