MFCで、CSVからデータを抽出・表示させる処理 1

管理人のタツです。

少し間が空いてしまいました。

忙しいのもありますが、やはり週一ペースを決めたからにはそれを守らなければ、と
謎の使命感のもとに二週間ぶりに投稿です。

早速

背景

さて、例によってこれを作り始める背景ですが。

実は私、MFCでとあるシステムを自作してみたい、という野望があります。

ただ、まだどういう風に作ればいいかモヤモヤとしており、
ここで詳細に語れるほどではありません。

なので、そのシステムの試作品を段階的に作っていき、
自分自身でどういうシステムを作ったらいいのか、を具現化したいと考えてます。

今回はその試作品第一号。

因みに超簡単に自作したいものを説明すると。

とあるwebサイト、データがずらりと並んでいるのですが、
超絶見ずらい

とある時期に何千何万の人が閲覧するサイトなのは知っていますが、
よくもまぁ誰も不便を言わないな、と。

不便不満はあるのかもしれませんが、それを修正するIT技術がないんだろうな、
という予想は簡単にできます。

しかもそのサイト、政府が出しているんですけどね。

なのでそこのwebサイトからデータを引っこ抜いて
MFCでなんとかこうとかしてデータ表示、PDF出力してみたいなぁというのです。

はい、何も伝わらずすみませんm(__)m

今回の処理を作ります。

処理の概略

CSVフォーマット

まずCSVのフォーマットは以下の通りです。

列に関して

  • 1列目:ID
  • 2列目:国語の点数
  • 3列目:数学の点数
  • 4列目:英語の点数
  • 5列目:理科の点数
  • 6列目:社会の点数

行に関して

  • 1行目はタイトル
  • 2行目以降:1列目は特に指定なし、2列目から6列目は0以上100以下の整数

実際の表はこんな感じ

実際に作る処理

  1. CSVファイルを選択し、取り込む。
    データはとりあえずCString型の配列で保存。
  2. CSVフォーマットが正しいかチェック(列数、各点数が適切か等)
  3. 画面側の操作で、エディットボックスに取り込んだデータを表示させることができる。
  4. 画面操作は
    ・「この列とこの列を表示させる」選択が可能
    ・「この教科でこの点数以上(以下)」の条件を表示させることができる
    ・上記条件のもと、平均値と中央値を算出できる

とりあえずこれほどで。

あまり欲張りすぎると挫折するので。

また、私は処理を作りながらブログを書くスタイルなので、
追加したいまたは削除したい処理があれば変更があるかもしれません。

プロジェクト作成

プロジェクトを作ります。

今回もVisual Studio 2022です。

名前は「TestResult」にしておきます。

アプリケーションの種類はダイアログベースにして作成。

完成!

関係ないですけど、この前Visual Studio 2022の更新をかけてから、
GitHub Copilotの機能が出てきたんですよね、右上に。

興味わいたら使ってみようかな。

とりあえず今回はコントロールの配置だけして終わります。

これ以上書いてしまうと疲れてモチベが下がってしまう可能性があるので(;´・ω・)

必要なコントロールは以下の通り。
ID名もここで決めておきます。

  • ファイル読み取り用のボタン(IDC_BUTTON_CSVFILEREAD)
  • 表示する条件を表示させるボタン(IDC_BUTTON_CONDITIONAL)
    (条件は別ダイアログを作る予定です)
  • 表示・更新ボタン(IDC_BUTTON_DISP)
  • 読み取ったファイルのパスを表示させるエディットボックス(IDC_EDIT_CSVPATH)
  • ヘッダーを表示させるエディットボックス(IDC_EDIT_DISP_HEADER)
  • データを表示させるエディットボックス(IDC_EDIT_DISP_DATA)

こんなところですかね。

ササっと配置します。

軽く補足しますと。

エディットボックスは3つとも読み取り専用にしています。
また、データ表示用のエディットボックスはMultilineをTrue、AutoVScrollもTrueにしています。

とりあえず今回はここまで。

MFCで、CSVからデータを抽出・表示させる処理 2
前回の記事 今回やりたいこと 今回実装したい処理は CSVを取り込みダイアログを作る CSVが取り込まれていない場合は、条件変更ボタンと表示ボタンを非活性にする CSV取り込み 早速作ります。 まずリソースビューのダイアログから、取込ボタン...

コメント

タイトルとURLをコピーしました