- - PR -
DataGridViewの内容をtxtで出力する際のエラー
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-07-11 22:35
こんばんわ、Asamiと申します。本日はよろしくお願いいたします。
現在、Windowsアプリケーションを作成していて、DataGridViewで表示されている内容をtxt形式で出力したいと考えていて下記のコードを書きましたが、 DataGridViewの内容を出力するときのコードにエラーが出てしまいます。(デバック時ではなく、書き込んだ時点で波線になってしまいます) 環境は、WindowsXP, SQL Server2005, VisualStudio2005です。 下記は出力ボタンを押したときの処理のすべてです。 この中でエラーが出るのは、「エラーが出ます@〜C」と書いてある行です。 具体的なエラーの内容は、 @ 「エラー 1 型 'System.Windows.Forms.DataGridViewCell' の値を 'String' に変換できません。」 A〜C「エラー 2 演算子 '&' は、型 'String' および 'System.Windows.Forms.DataGridViewCell' に対して定義されていません。」 と出てしまいます。 エラーが出る行をコメントアウトして実行すると、ヘッダー行のみ出力される状態です。 どなたかこのエラーの解決策のアドバイスを頂けないでしょうか。 私の質問で不十分な点がありましたらご指摘ください。 よろしくお願いいたします。 Private Sub btnDownload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDownload.Click Dim sr As IO.StreamWriter Dim linetext As String Dim datafile As String = "" Dim ret As Integer Dim intindex As Integer '待機カーソル(砂時計)を表示する Me.Cursor = Cursors.WaitCursor ret = SaveFileDialog1.ShowDialog() If ret = Windows.Forms.DialogResult.OK Then datafile = SaveFileDialog1.FileName ElseIf ret = Windows.Forms.DialogResult.Cancel Then '待機カーソル(砂時計)戻す Me.Cursor = Cursors.Default Exit Sub End If '行数を取得 Dim intcount As Integer =Me.M_WORKINGRESULTDataGridView.BindingContext(Me.M_WORKINGRESULTDataGridView.DataSource,Me.M_WORKINGRESULTDataGridView.DataMember).Count 'ファイルを作成する sr = New IO.StreamWriter(datafile, False, System.Text.Encoding.GetEncoding("shift_JIS")) 'フィールド名の生成(カンマ区切り) linetext = Me.DataGridView1.Columns(0).HeaderText & "," linetext &= Me.DataGridView1.Columns(1).HeaderText & "," linetext &= Me.DataGridView1.Columns(2).HeaderText & "," linetext &= Me.DataGridView1.Columns(3).HeaderText 'ファイルへの書き込み sr.WriteLine(linetext) '1行ずつ読み込んでtxt形式で書き込む For intindex = 0 To intcount - 1 Step 1 linetext = Me.DataGridView1.Item(intindex, 0) ←エラーが出ます@ linetext = linetext & "," & Me.DataGridView1.Item(intindex, 1)←エラーが出ますA linetext = linetext & "," & Me.DataGridView1.Item(intindex, 2)←エラーが出ますB linetext = linetext & "," & Me.DataGridView1.Item(intindex, 3)←エラーが出ますC 'ファイルへの書き込み() sr.WriteLine(linetext) Next intindex 'ファイルを閉じる sr.Close() '待機カーソル(砂時計)を元に戻す Me.Cursor = Cursors.Default MsgBox("データをエクスポートしました") End Sub [ メッセージ編集済み 編集者: Asami 編集日時 2007-07-11 22:38 ] [ メッセージ編集済み 編集者: Asami 編集日時 2007-07-11 23:04 ] |
|
投稿日時: 2007-07-12 08:01
いや、もう、メッセージのとおりで。。。
1も、2〜4も、原因は同じです。 「型」について知ってください。 とりあえず、cell まで入力して[F1] _________________ |
|
投稿日時: 2007-07-12 08:55
関係ないけど。
linetext は StringBuilder にした方が良いと思われ。 参考: 文字列処理を高速に行う |
|
投稿日時: 2007-07-12 11:08
Jittaさん、ひろれいさん、返信ありがとうございます。
ヘルプなどを見た結果、エラーが出る行の末尾にvalue.ToStringを追加する事で、なんとか内容は出力することができました。ありがとうございます。 ただ、、 ヘッダー行はきちんと出力されていますが、DataGridViewの内容の方は、 行単位のレコードを書き込みたいのに列単位のデータが書き込まれてしまいました。 例) 現状 :00001,00002,00003,・・・ やりたい事:00001,○○太郎,○○タロウ,・・・ 私ももう少し考えてみますが、かなり力不足なところがあるので、 もう一度、お力添え頂けないでしょうか。 よろしくお願いいたします。 |
|
投稿日時: 2007-07-12 11:32
考える前に、調べるクセをつけましょう。
DataGridView.Item プロパティ |
|
投稿日時: 2007-07-12 11:35
>現状 :00001,00002,00003,・・・
単なるコーディングミスかと。 http://msdn2.microsoft.com/ja-jp/library/ms158656(VS.80).aspx |
|
投稿日時: 2007-07-12 11:37
ひろれいさん。
申し訳ございません。 同じURLでした。 |
|
投稿日時: 2007-07-13 17:59
ひろれいさん、くんちんさん返答ありがとうございました。
無事、出力する事ができました。 item(intindex, 0)⇒誤 Item(0, intindex)⇒正 でした。 本当にありがとうございました。 |
1