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

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

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

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

Visual Studio 2012

Microsoft Visual Studio 2012は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2010の次のバージョンです

ファイルI/O

ファイルI/Oは、コンピューターにおけるファイルの入出力です。これは生成/削除やファイルを読み込んだり、出力をファイルに書き込むようなディレクトリやファイルの運用を含みます。

Q&A

解決済

4回答

27807閲覧

C#でCSVファイルに書き込み

TAKAYASU

総合スコア146

C#

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

Visual Studio 2012

Microsoft Visual Studio 2012は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2010の次のバージョンです

ファイルI/O

ファイルI/Oは、コンピューターにおけるファイルの入出力です。これは生成/削除やファイルを読み込んだり、出力をファイルに書き込むようなディレクトリやファイルの運用を含みます。

0グッド

0クリップ

投稿2015/12/14 01:52

現在C#を用いてディレクトリ作成・ファイル作成・ファイル読み込み・ファイル書き込みを行っております。

操作するファイルの拡張子はCSVです。

using(StreamWriter w = new StreamWriter("ファイルパス",true,Encoding.GetEncoding("UTF-8")))
{
w.write("1","2","3","4","5");

w.Close();

}

上記の様にソースを書きました。

想定している動作としてはw.write("1","2","3","4","5");で、セル単位で書き込みをしてくれる(1,2,3,4,5)と考えてましたが、書き込みはA1セルに「1」が記載されるのみの違う結果が返ってきました。

1行にセル単位で書き込みを行う場合はどの様にソースを書けばよろしいのでしょうか?

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

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

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

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

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

guest

回答4

0

質問のコードはTextWriter.Write メソッド (String, Object[]) (System.IO)に該当するため想定通りに書き込めていないのでしょう。

以下のように一つの文字列にまとめてやれば想定通りに動作するはずです。

c#

1using(StreamWriter w = new StreamWriter("ファイルパス",true,Encoding.GetEncoding("UTF-8"))) { 2 w.Write(string.Join(",","1","2","3","4","5")); 3 w.Close(); 4}

投稿2015/12/14 02:06

sho_cs

総合スコア3541

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

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

TAKAYASU

2015/12/14 03:04

回答ありがとうございます!! そのようなやり方もあるのですね。 参考にさせていただきますm(_ _)m
guest

0

そもそも理解できていないようなので

まず、String.Format(String, Object[])の説明を

C#

1// 一つ目の引数は文字列で{}とすることでその中に指定した0から始まる番号に対応する二つ目以降の引数の値を埋め込む形で文字列結合を行います 2String.Format("aaaaa{0}bbbbb{1}cccccc", 変数1, 変数2); 3// {0} {1} 4// 変数1=10、変数2="TEST"の場合は 5// "aaaaa10bbbbbTESTcccccc"という感じで一つの文字列が作られます 6// また、VisualStudio2015(C#6.0)以降だと以下のように変数を直接埋め込むことができるので 7// 埋め込む変数が増えた際などの埋め込む2番目以降の引数の変数と埋め込む場所のずれによるミスが起きにくくなりました 8String.Format("aaaaa{変数1}bbbbb{変数2}cccccc");

で、このString.Formatと同じ形のメソッドはたくさんあり、今回出てきているw.writeがそれになります
なので
w.write("1","2","3","4","5");だと、一つ目の引数の"1"では2番目以降の引数を埋め込む指定がありません
そのため、2番目以降の引数は文法上問題はないけど実質参照してもらえないだけのものとなっており、結果出来上がる文字列は"1"のままというわけです

またCSVなのにセルの中身がと書いてありますので、CSVとは何か(ダブルクリックでなくメモ帳などのテキストエディタで見てみましょう)、おそらくコピペで理解しないまま作っていると思われますので、C#もしくはVC#の入門書を買ってきて読みましょう
今のままでは他の人がやりたいこととまったく同じソースを提供してくれない限りは完成することも無理だと思いますので基礎知識と理解を深めないと結局は他の人のソースを書いてもらうことにしかならないと思います(なお、このサイトでは禁止行為として明記されています)

投稿2015/12/14 05:57

len_souko

総合スコア1348

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

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

TAKAYASU

2015/12/14 07:23

回答ありがとうございます! とても為になりました! 本は先日購入しましたので今夜読もうと考えてます!
guest

0

ベストアンサー

Excelと混同してそうですが
CSVは、カンマ区切りのテキストファイルです。

c#

1 w.write("1,2,3,4,5");

上記で試してみてください。

投稿2015/12/14 01:58

trick

総合スコア366

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

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

TAKAYASU

2015/12/14 02:02

ダブルクォーテーション内で区切るのですね!! CSVファイルがエクセルアイコンで表示されていたので混同していました^^;; ありがとうございました!!
guest

0

w.write("1","2","3","4","5");
w.Write("1,2,3,4,5");

visualstudio使っていれば、インテリセンスが引数の名前と型を表示するので
しっかり見れば何がおかしいのかわかります。

想定している動作としては

想像だけでなく、ちゃんとリファレンス読みましょう。
StreamWriterメソッド

投稿2015/12/14 02:02

編集2015/12/14 02:03
ozwk

総合スコア13521

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

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

TAKAYASU

2015/12/14 03:06

一応公式見たうえでの想定の質問でした^^;; ただ、公式を見てもちんぷんかんぷんでしたので。。。 回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問