プロが教えるわが家の防犯対策術!

CSVファイルを折れ線グラフ化するプログラムを作っているのですが・・・


以前、似たようなものをEXCELのVBAでやったことはあります。
今回は、使用先PCにEXCELが無いので、EXCELを使わないでやりたいと思い、
無料のVB2008をMicrosoftから落としてきて、手探りで始めています。


:LOG
:LOGGING_ID,3,"湿度"
:SERIAL_ID,13
:DEVICE_NUM,3
:RECORD_NUM,100
:DEV_COMMENT,"NO.1 湿度","NO.2 湿度","外気湿度"
:DEV_TYPE,BIN16,BIN16,BIN16
:DISP_TYPE,DEC,DEC,DEC
:DEV_SIZE,1,1,1
2010/10/29 08:30:50,498,0,0
2010/10/29 08:31:49,498,0,0
2010/10/29 08:32:49,497,0,0



一日1ファイル、1分ごとに記録された湿度のデータが入ったCSVファイルです。

これを、

  選択した日付のファイルを開き、
  グラフ目盛を”1分ごと””10分ごと”、”1時間ごと”に
  任意で変えて表示できる
  折れ線グラフを作ろうとしています。

DateTimePickerを使って、日付の指定、該当ファイルの有無、などは出来ました。

ですが、その後の、するべき方向性がまったっく見えてきません。


(1)指定したCSVファイルを開く
(2)一連の「:」行を削除
(3)先頭行に「,NO.1 湿度,NO.2 湿度,外気湿度,」を挿入
(4)指定した間隔分の行を抽出(10分ごとなら、00分、10分、20分、30分、40分、50分の行だけ抽出)
 (指定間隔はRadiobuttonで選ばせようと思っています。)
(5)作業用のCSVファイルとして保存
(4)Chartにて表示


こんな流れで合っていますか?

データベースを使うんですか?(←SQLだのADOだの、必要なら、ゼロから覚えなければならない状態です)

参考書よんだり、webで調べたりしているのですが、
VBから直接、csvを編集(行の削除、挿入)が出来るのか、
そして、別ファイルとして保存できるのかが、見えません。



訳がわからなくなってしまいました。


EXCELを使えば、楽ちんなんですかね?
ただ、EXCELでのVBAも、少しかじった程度なんですが。

なんとか道筋だけでも教えていただけたら、と思います。
お願いします。

A 回答 (1件)

エクセルでやれば、グラフを描くところは、エクセル(VBA)がやってくれるので、圧倒的に楽。


CSVファイルをオープン
CSVレコードを1レコード読む
不要なレコードは読み飛ばす
時間間隔ごとに、該当レコード分は処理、それ以外は読み飛ばす(またはその間隔の平均なりを採る)
レコードをSplit関数で、カンマ(ディミタ)で分離
シートに各行にデータを書き出す。シートの1行下をポイント。
次以下のレコードで上記を繰り返し
Et ENDでCSVファイルをクローズ
シートのデータを対象にグラフを描かせる。
エクセルでグラフを描かせるのはシートに、無駄のないでーたが一旦書き出されることが必要条件です。
このVBAでのコードがどうなるか、はグラフを描かせるマクロの記録から類推し、マクロの記録を修正する。ただデータ数が多いと実際的に使えるグラフになるか未経験で判らない。巻物みたいになったら、どうだろうか。
ーーー
VB.NETでは、グラフを描くようなツールが無ければ(市販とか。購入する金が無ければ
http://detail.chiebukuro.yahoo.co.jp/qa/question …などで言っているコンポーネント)、
上記のCSVファイルの各レコード処理を行い(Splitまで)Imageコントロールに
Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
Dim ChartLeft As Integer = 80 '左位置
Dim ChartRight As Integer = PictureBox1.Width - 50 '右位置
Dim ChartHeight As Integer = 50 '上方位置
Dim ChartLower As Integer = PictureBox1.Height - 10 '下方位置

Dim Graphics As System.Drawing.Graphics = PictureBox1.CreateGraphics
Dim ChartAxis As New Pen(Color.Black, 2)
Graphics.DrawLine(ChartAxis, ChartLeft, ChartHeight, ChartLeft, ChartLower)
Graphics.DrawLine(ChartAxis, ChartLeft, ChartLower, ChartRight, ChartLower)
Graphics.DrawLine(ChartAxis, ChartLeft + 30, ChartHeight + 30, ChartLeft + 40, ChartHeight + 10)
Graphics.DrawLine(ChartAxis, ChartLeft + 40, ChartHeight + 10, ChartLeft + 60, ChartHeight + 70)
Graphics.DrawLine(ChartAxis, ChartLeft + 60, ChartHeight + 70, ChartLeft + 90, ChartHeight + 100)
End Sub
WEBにあったコードを一部改変しました。3点を結ぶ折線の例(軸付き)。
この下3行の部分をCSVファイルを読んでカンマで分離したデータでデータ数だけ繰り返す。
しかし実際にやるには、諸々の多数の解決すべき点が出てくるのは目に見えている。多数データで
纏め上げた経験が無いので、実際役立つか判らない。
グラフには目盛や反例やタイトルなど必要だし、自作は面倒なことだろう。
ーーー
Split関数は、VB.NETで
http://www.atmarkit.co.jp/fdotnet/dotnettips/317 …
テキストファイルをVB.NETで読む
http://www.cocoaliz.com/vb.net/index/25/  など
Googleででも、トッピックスごとに照会する。
    • good
    • 0
この回答へのお礼

お礼遅くなりました。


今回の件は、データベース化するほどのものではないと、知人に判断され、
時間もないことで、データベース化はあきらめました。

少し勉強が必要なので、がんばります。

お礼日時:2010/11/05 02:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!