C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

CSV出力について /tari (17/09/07(Thu) 18:49) #85058
Re[1]: CSV出力について /魔界の仮面弁士 (17/09/07(Thu) 19:22) #85059
  └ Re[2]: CSV出力について /tari (17/09/08(Fri) 09:59) #85066 解決済み


親記事 / ▼[ 85059 ]
■85058 / 親階層)  CSV出力について
□投稿者/ tari (1回)-(2017/09/07(Thu) 18:49:46)

分類:[.NET 全般] 

VB.netでプログラムを作成してますが
わからないことがあるので教えてください

a()= {0,1,2,3}
b()= {4,5,6,7}

があります

CSVへ出力する際

for i as integer = 0 to a.Length - 1
Dim test As String() = {a(i), b(i)}
File.AppendAllLines( path & "c.csv", test, Encoding.Default)
next

0
4
1
5
2
6
3
7

書き込まれますが

0,4
1,5
2,6
3,7

というふうに出力したいんです

教えてください
[ □ Tree ] 返信 編集キー/

▲[ 85058 ] / ▼[ 85066 ]
■85059 / 1階層)  Re[1]: CSV出力について
□投稿者/ 魔界の仮面弁士 (1406回)-(2017/09/07(Thu) 19:22:43)
No85058 (tari さん) に返信
> a()= {0,1,2,3}
> b()= {4,5,6,7}

型は整数なのですか?

Dim a As Integer() = {0, 1, 2, 3}
Dim b() As Integer = {4, 5, 6, 7}

それとも文字列なのですか?

Dim a As String() = {"0", "1", "2", "3"}
Dim b() As String = {"4", "5", "6", "7"}


ひとまず、文字列ということで回答します。

> 0,4
> 1,5
> 2,6
> 3,7

a と b の要素数が同じであるという前提で良いなら:

'案1
Dim test = Enumerable.Range(0, a.Length).Select(Function(i) a(i) & "," & b(i))
File.WriteAllLines(path & "c.csv", test, Encoding.Default)


'案2
For n = 0 To a.Length - 1
 Dim test As String = a(n) & "," & b(n) & ControlChars.NewLine
 File.AppendAllText(path & "c.csv", test, Encoding.Default)
Next


なお上記は、「各レコードの末尾」に改行が配置される形式で出力されます。
「レコードとレコードの間」に改行を配置する場合は、下記の様に書けます。

'案1改
Dim test = Enumerable.Range(0, a.Length).Select(Function(i) a(i) & "," & b(i))
.WriteAllText(path & "c.csv", String.Join(vbNewLine, test), Encoding.Default)

[ 親 85058 / □ Tree ] 返信 編集キー/

▲[ 85059 ] / 返信無し
■85066 / 2階層)  Re[2]: CSV出力について
□投稿者/ tari (2回)-(2017/09/08(Fri) 09:59:04)
No85059 (魔界の仮面弁士 さん) に返信

ありがとうございます
おかげさまで、できました

色々方法があるんですね・・
勉強になります!
解決済み
[ 親 85058 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -