IronPython事始め

データ、データバインディング

ここではCSVファイルからデータを読み込み、DataGridViewに表示します。 SQLを使った方が本格的で良いのかもしれませんが、冗長ですし、いろいろな参考書にも具体例が載っているので今回はお手軽な方法を取る事にしました。

1. 画面キャプチャ

$alt

2. 入力するCSVファイル:05_form_databinding.csv

今回は次のようなCSVファイル(05_form_databinding.csv)をあらかじめ作成しておきました。

05_form_databinding.csv

name,age,address
yasu,20,AizuWakamatsu
abe,25,Yokohama

3. サンプルコード:DataGridViewにデータを入力する

"05_form_databinding.csv"ファイルを読み込み、DataGridViewに表示するアプリケーションを作成します。

05_form_databinding.ipy

# coding=Shift_JIS
# IronPython Example:  DataGridView
# - 
# @author: YasuhiroABE <yasu@yasundial.org>
# @see: DataGridView Class Example from MSDN API Reference
#
import clr
clr.AddReferenceByPartialName("System.Windows.Forms")
clr.AddReferenceByPartialName("System.Drawing")
clr.AddReferenceByPartialName("System.Data")
import System
from System.Windows.Forms import Form
from System.Windows.Forms import DataGridView
from System.Data import DataTable
from System.IO import StreamReader
from System.Drawing import Size

form = Form()
form.Size = Size(400,180)
form.Text = "Hello World!"

## 静的にファイル名を指定します
filename = "05_form_databinding.csv"

## setup DataTable object
dt = DataTable()
reader = StreamReader(filename)
cols = []
for c in reader.ReadLine().split(","):
  dt.Columns.Add(c, System.Type.GetType("System.String"))
  cols.append(c)
  
l = reader.ReadLine()
while(l != None):
  row = dt.NewRow()
  counter = 0
  for item in l.split(","):
    row[cols[counter]] = item
    counter += 1
  dt.Rows.Add(row)
  l = reader.ReadLine()
reader.Close()

## setup DataGridView object
datagridview = DataGridView()
datagridview.DataSource = dt
datagridview.Size = form.Size

form.Controls.Add(datagridview)
System.Windows.Forms.Application.Run(form)
## end ##

4. CSVファイルの取り扱いについて

コードをみれば単純にカンマで区切っただけで、いわゆるRFC4180なCSVファイルの処理ができるわけではありません。 残念ながらIronPythonにはCPythonでは使えるcsv.pyが附属しないため、IronPythonで使えるCSVファイルの取り扱いについては、また後で試すつもりです。


Created: 2010-03-11, Last modified: 2010-03-19

2009,2010 © Yasuhiro ABE <yasu@yasundial.org>

Valid XHTML + RDFa RDFa it (RDF/XML)!

正当なCSSです!

Creative Commons License www.yasundial.org by Yasuhiro ABE is licensed under a Creative Commons Attribution 2.1 Japan License. Permissions beyond the scope of this license may be available at http://www.yasundial.org/info/license.html.