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

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

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

CSV出力にて日付で保存

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■82829 / inTopicNo.1)  CSV出力にて日付で保存
  
□投稿者/ Name01 (1回)-(2017/02/09(Thu) 12:13:47)

分類:[.NET 全般] 

初心者です 教えてください

VB2013で Labelの値を出力したいんですが

CSVの名前を付けてというのがわかりません


Dim csvPath As String = "\\Desktop\master.csv"

Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_JIS")

Dim sr As New System.IO.StreamWriter(csvPath, False, enc) '開く

'時間
sr.Write(Form_main.Label61.Text)

sr.Write(","c)
'合計数
sr.Write(Form_main.Label59.Text)

sr.Write(","c)

'今日の日付
sr.Write(Form_main.Label11.Text)

sr.Write(","c)




sr.Close()

Catch ex As Exception
End Try

Form_main.TextBox1.Text = "グラフ用データを出力しました"


masterていうCSVに
3つのLabel値を保存なんですが

毎日1回保存でこれだと上書きされます

そこで 本日の日付で保存していけば
別々になるはずなので
教えてください
引用返信 編集キー/
■82830 / inTopicNo.2)  Re[1]: CSV出力にて日付で保存
□投稿者/ 魔界の仮面弁士 (1121回)-(2017/02/09(Thu) 12:37:57)
No82829 (Name01 さん) に返信
> CSVの名前を付けてというのがわかりません

質問の内容が分かりませんでした。

『CSVの名前を付けて』というのは、
どういう意味でしょうか?


> Dim csvPath As String = "\\Desktop\master.csv"
UNC でも無いようですし、これはパスとして正しくないのでは?


> sr.Write(Form_main.Label61.Text) '時間
> sr.Write(Form_main.Label59.Text) '合計数
> sr.Write(Form_main.Label11.Text) '今日の日付
> 3つのLabel値を保存なんですが
Label61 といった初期名のまま放置するのではなく、
それぞれの Label に、適切な名前をつけましょう。


> 毎日1回保存でこれだと上書きされます
StreamWriter で、Append 引数を False にしていますから、
追記モードではなく上書きモードになっていますね。

Append 引数に True を指定した場合は上書きされず、
ファイルの後ろに毎回追記されるようになります。


> そこで 本日の日付で保存していけば
> 別々になるはずなので
> 教えてください

「やりたいこと」は分かりましたが、
知りたいのはどの点なのでしょうか?

上書きではなく追記したい、という意味なら、上記回答の通りです。


本日の日付を得る方法が分からないのなら、
 Dim d As Date = Today
といった感じです。時刻まで得たいなら、Today の代わりに Now を使えます。

日付から文字列に変換する方法が分からないのなら、
 TextBox1.Text = d.ToString("y年M月d日")
 TextBox2.Text = d.ToString("yyyyMMdd")
です。もちろん TextBox ではなく、Label11 が相手でも OK。

文字列としてではなく、年や月などを数値として得たいのなら、
 Dim y As Integer = d.Year  'または Year(d)
 Dim m As Integer = d.Month  'または Month(d)
といった感じです。

本日の日付をファイル名に使いたい、という話だとしたら、
> Dim csvPath As String = "\\Desktop\master.csv"
の内容を、これらの日付情報にしてやれば良いでしょう。
引用返信 編集キー/
■82831 / inTopicNo.3)  Re[2]: CSV出力にて日付で保存
□投稿者/ Name01 (2回)-(2017/02/09(Thu) 15:15:57)
No82830 (魔界の仮面弁士 さん) に返信

お返事ありがとうございます。

わかりづらくすいません

要は、一日に1回CSVへ出力します

CSVは、master.csv に保存されていますが

それを

Todayで今日の日付 20170209にしたいのです

この日付をファイル名がしたいのです

masterのシートにシートが分かれて
できればいいんですが。。


今だと、追記、上書きでもファイルは一緒なので

次にやりたいことが
VBAで、CSVを読み込んで 値の情報を読み込み

グラフを生成するということなので
csvを分けたかったのです

本当は、VBで一貫したいのですが
図形描写とうは、僕のレベルは無理ですので

グラフはエクセルに任せようと思い
csv等でデータ化することだけにしました



引用返信 編集キー/
■82832 / inTopicNo.4)  Re[3]: CSV出力にて日付で保存
□投稿者/ 魔界の仮面弁士 (1122回)-(2017/02/09(Thu) 16:54:27)
No82831 (Name01 さん) に返信
> Todayで今日の日付 20170209にしたいのです
> この日付をファイル名がしたいのです

そのために必要な情報は既に提示したと思うのですが、
他にも問題が残っているということでしょうか。


> masterのシートにシートが分かれて
> できればいいんですが。。
それをしたいのであれば、VB2013 ではなく、
Excel VBA で開発したほうが手っ取り早いかも知れません。
グラフがあるのなら尚の事。

あるいは、Excel の「外部データの取り込み」を用いて、
シートごとに別の CSV にマップしておくという手もあります。
これなら、VB2013 のコードは今のままでも済みそうです。


> 今だと、追記、上書きでもファイルは一緒なので
データの内容にもよりますが、CSV のファイル名は固定にして追記/上書きし、
Excel のピボットテーブルで日別集計してグラフ化するという手もあります。
引用返信 編集キー/
■82833 / inTopicNo.5)  Re[3]: CSV出力にて日付で保存
□投稿者/ shu (959回)-(2017/02/09(Thu) 22:09:57)
No82831 (Name01 さん) に返信

Date.Today.ToString("yyyyMMdd")

20170209
のような文字列を取得できます。
それをファイル名の中に文字列連結すればよいと思います。


引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ