- - PR -
ExcelをDataGridで表示するときの書式設定(Windowsフォーム)
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-10-28 00:14
いつも参考にさせていただいています。
OSはwindowsXP、Excelのバージョンは2003、 コードは VB.net2003 で作成しております。 Escelファイルのシートをデータグリッドでwindowsフォーム上に表示しています コードでNullText="--"としたいのですがヘルプや参考資料のAccessのコードを どうやってExcelに対応させたらよいのかよくわかりません。 特にMappingNameがどれに相当するのか、確証が得られなくて困っています。 Excell シートの内容はこんな感じです。 no# 日付 時間 項目 場所 -------------------------------------- 1 X月XX日 X時XX分 ABCDE 第1工場 2 X月XX日 X時XX分 ABCDE 第3工場 3 X月XX日 X時XX分 ABCDE 第2工場 今は以下のようなコードを書いていますが、空欄セルはNULL表示のままです。 Dim CONNECTION_STRING As String = _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & FileName & ";" & _ "Extended Properties=""Excel 8.0;HDR=Yes""" Dim Sheet As String = "SELECT * FROM [seet1$]" "--- OleDbConnection の宣言 ---" Dim RirekiConnect As New OleDbConnection(CONNECTION_STRING) "--- OleDbDataAdapter の宣言 ---" Dim Adp As New OleDbDataAdapter(Sheet, RirekiConnect) "--- DataSet の宣言 ---" Dim Dst As New DataSet "--- Fill の実行 ---" Adp.Fill(Dst, "Test") Dim DataGridTableStyle1 As New DataGridTableStyle DataGridTableStyle1.MappingName = "seet1$" Dim No As New DataGridTextBoxColumn Dim Koumoku As New DataGridTextBoxColumn Nitiji.MappingName = "日付" Nitiji.NullText = "--" DataGridTableStyle1.GridColumnStyles.Add(Nitiji) Debug.WriteLine DataGrid1.SetDataBinding(Dst, "test") DataGrid1.CaptionText = Sheet Mapping Name を利用するときはDataSouseでDataGridへバインドしなくては ならなかったような記事を読んだような気もするのですが、 そうなるとExcellでどう表記したらよいのか余計にわからないのです… | ||||
|
投稿日時: 2004-10-28 08:35
おはようございます。
DataGridTableStyleのMappingNameは元になるDataTable名を指定します。 そしてDataGridTextBoxColumnのMappingNameはそのDataTableの列名を指定します。 ですから、元のデータがExcelであろうとAccessであろうとOracleであろうと同じです。 .NET TIPS DataGridコントロールで列の中央ぞろえや右ぞろえを指定するには? http://www.atmarkit.co.jp/fdotnet/dotnettips/102dgcolalign/dgcolalign.html [ メッセージ編集済み 編集者: とっと 編集日時 2004-10-28 08:37 ] | ||||
|
投稿日時: 2004-10-28 09:23
とっと様
DataTableイコール データファイルだと思いこんでいました。 そういえば私の書いたコードにはDataTableを作成する内容がどこにも無いですね… 一度その記事を参考にもう一度やってみます。 | ||||
|
投稿日時: 2004-10-28 13:27
こんにちは。
いえ、ありますよ。 Adp.Fill(Dst, "Test") ここでFillメソッドを実行した時にDataSet内に暗示的にDataTableを作成しています。 ですから、 Dim DataGridTableStyle1 As New DataGridTableStyle DataGridTableStyle1.MappingName = "Test" Dim Nitiji As New DataGridTextBoxColumn Nitiji.MappingName = "日付" Nitiji.HeaderText = "日付" Nitiji.NullText = "--" Nitiji.Width = 100 DataGridTableStyle1.GridColumnStyles.Add(Nitiji) DataGrid1.TableStyles.Clear() DataGrid1.TableStyles.Add(DataGridTableStyle1) Me.DataGrid1.DataSource = Dst.Tables(0) と、まあこんな感じで。もし別にDataTableを宣言したければ Dim dtTable As DataTable dtTable = Dst.Tables("Test") として、 DataGridTableStyle1.MappingName = dtTable.TableName で、 Me.DataGrid1.DataSource = dtTable とやってもOKです。 | ||||
|
投稿日時: 2004-10-29 10:08
とっと様、ありがとうございます!
書き込んだ後、DataAdapter.Fill(Dataset,DataTable名) のはずなので、やっぱりDataTableは作成してあるような…と昼間中悩んでいました。 実力不足で、せっかくヒントをいただいても理解に時間がかかって申し訳ないです。 Fill(Dst,Test) としているのに DataGridTableStyle1.MappingName = "Test" とせずに MappingNameがいきなり別の名前になっているので、反映されないんですね 尚且つ、 TableStyles.Clear() を行っていないので設定が反映されるわけがない、という・・・。 (一回目のバインドならclear()の必要性は無いけれども。) もう少し、DataTableとDataGridの関係について勉強してみます。 |
1