コモンダイアログボックスにはいろいろありますが、ここではOpenFileDialogを使ってみます。 CSVファイルの指定がコードで行なわれていた部分で、任意のファイルを指定できるように作り替えてみました。
実行するとOpenFileDialogが起動し、CSVファイルの入力を促します。
今回は次のような新しいCSVファイルを読み込ませる事にしました。
07_form_filedialog.csv
name,age,address,phone yasu,20,AizuWakamatsu,22-xxxx abe,25,Yokohama,982-xxxx hoge,30,somewhere,xxx-xxxx
CSVファイルを変数filenameに指定する部分を書き換えて次のようになりました。 CSVファイルを処理する部分は変更していません。
07_form_filedialog.ipy
# coding=Shift_JIS # IronPython Example: OpenFileDialog + DataGridView # - # @author: YasuhiroABE <yasu@yasundial.org> # @see: OpenFileDialog 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.Windows.Forms import DockStyle from System.Data import DataTable from System.IO import StreamReader from System.Drawing import Size from System.Windows.Forms import OpenFileDialog from System.Windows.Forms import DialogResult from System.Windows.Forms import MessageBox form = Form() form.Size = Size(400,180) form.Text = "Hello World!" ## 静的にファイル名を指定します #filename = "05_form_databinding.csv" filename = "" fdialog = OpenFileDialog() fdialog.InitialDirectory = "C:\\IronPython26" fdialog.Filter = "CSV file (*.csv)|*.csv|All files (*.*)|*.*" fdialog.FilterIndex = 1 fdialog.RestoreDirectory = True if fdialog.ShowDialog() == DialogResult.OK: filename = fdialog.FileName else: MessageBox.Show("Please input proper filename.","Error Dialog") sys.exit(1) ## 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.Dock = DockStyle.Fill datagridview.Size = form.Size form.Controls.Add(datagridview) System.Windows.Forms.Application.Run(form) ## end ##
Created: 2010-03-11, Last modified: 2010-03-19
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.