@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

DataGridのフィールド名をCSVファイルに出力

1
投稿者投稿内容
まこ
会議室デビュー日: 2005/04/06
投稿数: 6
投稿日時: 2005-04-15 16:20
こんにちは、まこと申します。
宜しくお願いします

早速ですが、datagridのフィールド名及びデータをcsvに出力しようとしているのですが、フィールド名を出力することができません。


Dim sw As IO.StreamWriter
Dim i As Integer
Dim strWriteLine As String
Dim intIndex As Integer
Dim intCount As Integer = DataGrid1.BindingContext(DataGrid1.DataSource, DataGrid1.DataMember).Count

'[名前を付けて保存]ダイアログ
dlgSave.InitialDirectory = Application.StartupPath & "\.."
dlgSave.Filter = "CSV形式(*.csv)|*.csv|XML形式(*.xml)|*.xml|すべて(*.*)|*.*"
If dlgSave.ShowDialog = DialogResult.Cancel Then
Exit Sub
End If

'ファイルオープン
sw = New IO.StreamWriter(dlgsave.FileName, _
False, System.Text.Encoding.GetEncoding("Shift-JIS"))
strWriteLine = Me.DataGrid1.Enabled

'フィールド名の書き出し
strWriteLine = Me.DataGrid1.Columns(0).headertext
For i = 1 To 45
strWriteLine = strWriteLine & "," & Me.DataGrid1.Columns(i).headertext
i = i + 1
Next i
sw.WriteLine(strWriteLine)

'データをファイルに出力
For intIndex = 0 To intCount - 1 Step 1

strWriteLine = Me.DataGrid1.Item(intIndex, 0)
For i = 1 To 45
strWriteLine = strWriteLine & "," & Me.DataGrid1.Item(intIndex, i)
i = i + 1
Next i

sw.WriteLine(strWriteLine)
Next intIndex

'ファイルクローズ
sw.Close()
MessageBox.Show("保存しました", "エクスポート")

いろいろ過去のスレットを参考させていただいたのですが、見つける事が出来ませんした。
何卒宜しくお願い致します。


環境ですが、
OS:WIN XP HOME SP2
.netバージョン:2003
まこ
会議室デビュー日: 2005/04/06
投稿数: 6
投稿日時: 2005-04-15 16:41
まこです。追記します。
ダラダラ長いコード(要らないコード)を記してしまいましたが、以下の部分です。

'フィールド名の書き出し
strWriteLine = Me.DataGrid1.Columns(0).headertext
For i = 1 To 45
strWriteLine = strWriteLine & "," & Me.DataGrid1.Columns(i).headertext
i = i + 1
Next i
sw.WriteLine(strWriteLine)

宜しくお願いします。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2005-04-16 10:45
諸農です。


・headertextに文字列が入っているかどうかは確認しましたか?
引用:
コード:
'フィールド名の書き出し 
strWriteLine = Me.DataGrid1.Columns(0).headertext 




・出力されたファイルに「Enabled」の内容が書き込まれていますか?
引用:
コード:
'ファイルオープン 
strWriteLine = Me.DataGrid1.Enabled
'フィールド名の書き出し 
strWriteLine = Me.DataGrid1.Columns(0).headertext 




と言うことで、まこさんが直面している問題点とは一体何でしょうか?
その問題点を明確にしましょう。

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2005-04-17 03:26
引用:
早速ですが、datagridのフィールド名及びデータをcsvに出力しようとしているのですが、フィールド名を出力することができません。

できなくてどうなるのですか?
コンパイルエラー、実行時エラー、予期しない動作、何かしらは起きるでしょう。

引用:
strWriteLine = Me.DataGrid1.Columns(0).headertext
For i = 1 To 45
strWriteLine = strWriteLine & "," & Me.DataGrid1.Columns(i).headertext
i = i + 1
Next i
sw.WriteLine(strWriteLine)

何を開発してるのか書いてませんがコードからしてWindowsフォームでしょうね。
で、Windows.FormsのDataGridにColumnsってメンバないんじゃないですか?
エラーになりません?

DataSourceからTable取得してColumnName取得すればいいのかな。
まこ
会議室デビュー日: 2005/04/06
投稿数: 6
投稿日時: 2005-04-18 12:02
諸農さん、べるさん、適切なアドバイスありがとうございます。
皆さんが一生懸命ご回答くださっているのに返信が遅れて大変申し訳ございません。

引用:

headertextに文字列が入っているかどうかは確認しましたか?


非常に恥ずかしいことですが、以下の構文で0列めのフィールド名が勝手に取得できるものだと思ってました。
Me.DataGrid1.Columns(0).headertext

引用:

何を開発してるのか書いてませんがコードからしてWindowsフォームでしょうね。
で、Windows.FormsのDataGridにColumnsってメンバないんじゃないですか?
エラーになりません?

DataSourceからTable取得してColumnName取得すればいいのかな。



WINDOWSフォームです。
アドバイスとおりDataSourceからTable取得してColumnName取得し、headertextにフィールド名を入力して出来ました。
Me.DataGrid1Columns0.headertext

本当にありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)