QA@IT
この質問・回答は、@ITの旧掲示板からインポートされたものです。

VB.NETでEXCELへDataTable(DataSet)の内容を出力したい

お世話になります。
VB.NET(2003) & ACCESSでWINDOWSアプリを作成しています。

SQLを発行して、得た結果をDataTableにセットしているのですが、その内容を全てEXCELファイルに出力する処理を作成しようとしているところです。

VB6である"CopyFromRecordset"のように、DataTableの内容を簡単に出力する方法がないか探していますが見つかりません。
ご存知の方がいたら、是非教えて下さい。
または、他の方法でもDataTable(DataSet)のExcelへの出力サンプル等あれば教えて頂けますでしょうか。

よろしくお願い致します。

[ メッセージ編集済み 編集者: K5 編集日時 2006-04-26 04:28 ]
[ メッセージ編集済み 編集者: K5 編集日時 2006-04-26 11:20 ]

質問者:K5

回答

K5さんの書き込み (2006-04-26 03:57) より:

SQLを発行して、得た結果をDataTableにセットしているのですが、その内容を全てEXCELファイルに出力する処理を作成しようとしているところです。

"Excel ファイル" と言うからには、Excel Book 形式のファイルへ出力するということなのでしょうか?
書式なしの CSV や TSV ではなく、書式付きの Excel のワークシートへの出力なのでしょうか?

これによって回答が変わります。

_________________C# と VB.NET の入門サイト
じゃんぬねっと日誌

投稿者:じゃんぬねっと

編集 履歴 (0)

じゃんぬねっと様

ご返信ありがとうございます

"Excel ファイル" と言うからには、Excel Book 形式のファイルへ出力するということなのでしょうか?

書式なしの CSV や TSV ではなく、書式付きの Excel のワークシートへの出力なのでしょうか?

これによって回答が変わります。

説明不足で申し訳ありません。
Excel Book 形式のファイル(*.xls)に対しての出力です。
書式付きの Excel のワークシートへの出力です。

以上よろしくお願い致します。

投稿者:K5

編集 履歴 (0)

K5さんの書き込み (2006-04-26 11:19) より:

Excel Book 形式のファイル(*.xls)に対しての出力です。

書式付きの Excel のワークシートへの出力です。

手元にあるものだけで思いつくのは、COM Interop くらいですね。
"Export to Excel" DataTable あたりで「検索」してみましょう。

_________________C# と VB.NET の入門サイト
じゃんぬねっと日誌

投稿者:じゃんぬねっと

編集 履歴 (0)

こんにちは。
---------------------------------------------------------------------
Dim intRowCount As Integer = 1 '行
For Each drv As DataRowView In DataTable.DefaultView
'列数分だけ処理
Dim intColCount As Integer = 1 '列
For i As Integer = 1 To DefaultView.Table.Columns.Count() Step 1
xlRange = DirectCast(xlSheet.Cells(intRowCount, intColCount), Excel.Range)
xlRange.Value = drv.Item(i - 1)

    '列インクリメント
    intColCount += 1
Next i

'行インクリメント
intRowCount += 1

Next
---------------------------------------------------------------------

原始的ではありますが、
イメージ的には上記のような感じで、ループすれば
データ量が多いときのレスポンスはともかくとして
シートへ対しての出力自体は実現できるかと。
あ、これはDataViewでまわしてます。

もちろんExcelファイルのOpenやら解放やらは
別途必要です。

投稿者:むら

編集 履歴 (0)

じゃんぬねっとさんの書き込み (2006-04-26 11:49) より:

手元にあるものだけで思いつくのは、COM Interop くらいですね。

他に、すぐに思いつく範囲で、Office2003前提で良ければVSTO、
あとサードパーティコンポーネントの有名どころでActiveReportsのExcel Export機能とExcelCreatorあたりでしょうか。

投稿者:ぼのぼの

編集 履歴 (0)

じゃんぬねっとさん、むらさん、ぼのぼのさん、todoさんご返信ありがとうございます。
遅くなって申し訳ありません。

今回はむらさん、todoに教えて頂いたサンプルコードを元に、行、列をループして出力するやり方で対応しました。

本当に勉強になりました。
ありがとうございました。

投稿者:K5

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。