C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[8]: vb.netからExcelファイルを出力したい


(過去ログ 29 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■13754 / inTopicNo.1)  vb.netからExcelファイルを出力したい
  
□投稿者/ 初心者 (48回)-(2008/02/04(Mon) 15:15:38)

分類:[VB.NET/VB2005] 

はじめまして!

常連の皆様方におかれましては、うんざりするような
初歩的な質問をさせて頂きますことをお許し下さい。

画面(フォーム)上のデータグリッドで表示されているデータを
EXCEL(CSVではなくてEXCEL形式で)ファイルへ保存したいのですが、
方法が分からずにおります。

(又、データグリッドへ表示されている全ての項目でなく、
2項目(列)のみ保存ということも可能でしょうか。)

ファイルを保存ダイアログボックスを出力する処理まではでき、
「(データグリッド名).ExportToExcel」でデータグリッドのデータが
EXCELファイルに保存できるであろう事は調べて分かったのですが、
その使用方法が分かりません。
(自分なりに調べたのですが、調べ方が悪かったのか、スキル不足で
これ、といった方法を見つける事ができませんでした。)

ご教示のほど、何卒宜しくお願い致します。

'--------------------------------------------------------------------------------------
'Excel出力ボタン押下時処理
'--------------------------------------------------------------------------------------
Private Sub btnExcelOutput_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExcelOutput.Click

'SaveFileDialogクラスのインスタンスを作成
Dim sfd As New SaveFileDialog()
Dim strFileName As String

'SITEID取得
strFileName = txtSITEID.Text

sfd.FileName = strFileName & ".xls" 'ファイル名
sfd.InitialDirectory = "C:\" 'フォルダ名
sfd.Title = "名前を付けて保存" 'タイトル

'[ファイルの種類]に表示される選択肢を指定する
sfd.Filter = "Microsoft Excel ブック(*.xls)|*.xls"

'ダイアログボックスを閉じる前に現在のディレクトリを復元するようにする
sfd.RestoreDirectory = True

'ダイアログを表示する
If sfd.ShowDialog() = DialogResult.OK Then

If sfd.OverwritePrompt = True Then
'上書きがうまくいかないので、一度ファイルを消す
System.IO.File.Delete(sfd.FileName)
End If

'ファイル出力??
dgMitsumoriMeisai.ExportToExcel(sfd.FileName)
End If

End Sub
引用返信 編集キー/
■13757 / inTopicNo.2)  Re[1]: vb.netからExcelファイルを出力したい
□投稿者/ はつね (423回)-(2008/02/04(Mon) 16:27:58)
はつね さんの Web サイト
No13754 (初心者 さん) に返信
> 画面(フォーム)上のデータグリッドで表示されているデータを
> EXCEL(CSVではなくてEXCEL形式で)ファイルへ保存したいのですが、
> 方法が分からずにおります。

ExcelとCOM連携して出力します。

http://jeanne.wankuma.com/tips/excel/
http://anetm.com/dev/tools/112217.htm

結構、面倒ですよ。
引用返信 編集キー/
■13759 / inTopicNo.3)  Re[2]: vb.netからExcelファイルを出力したい
□投稿者/ 初心者 (50回)-(2008/02/04(Mon) 16:56:50)
No13757 (はつね さん) に返信
> ExcelとCOM連携して出力します。
>
> http://jeanne.wankuma.com/tips/excel/
> http://anetm.com/dev/tools/112217.htm
>
> 結構、面倒ですよ。

早速返信して下さってありがとうございます。
教えて頂いた、URLを拝見させて頂きました。

もう一点質問をさせて頂きたいのですが、
この様に、参照の追加(Microsoft Excel *.* ObjectLibrary)を行わないと
EXCELへの出力はできないものなのでしょうか??

初歩的な質問でごめんなさい。

今、設計者(私の上司)が出張で2週間不在にしていて、戻ってくるまでには
この機能(他にもあるのですが)を完成させなくてはいけない状態なのですが、
勝手に参照設定を変更してもいいものなのかが分からずにいる状態です。

[.ExportToExcel]を使用すれば、参照設定をいじらずにすむのではないか・・と
素人考えで質問をさせて頂いた次第です。。

できれば参照設定をいじらずにすむ方法を探しているのですが、
やはり不可能なのでしょうか。
引用返信 編集キー/
■13761 / inTopicNo.4)  Re[3]: vb.netからExcelファイルを出力したい
□投稿者/ はつね (424回)-(2008/02/04(Mon) 17:17:12)
はつね さんの Web サイト
No13759 (初心者 さん) に返信
> もう一点質問をさせて頂きたいのですが、
> この様に、参照の追加(Microsoft Excel *.* ObjectLibrary)を行わないと
> EXCELへの出力はできないものなのでしょうか??

VB2005の基本機能では不可能ですが......

> [.ExportToExcel]を使用すれば、参照設定をいじらずにすむのではないか・・と
> 素人考えで質問をさせて頂いた次第です。。

もしかしたら、GrapeCityのSPREADとか使っているのですか?
それとも、何か独自のコンポーネントを作って、そこにExportToExcelメソッドがあるのですか?

前者であれば、SPREADのヘルプファイルにサンプル乗っていませんか?

引用返信 編集キー/
■13763 / inTopicNo.5)  Re[4]: vb.netからExcelファイルを出力したい
□投稿者/ 初心者 (51回)-(2008/02/04(Mon) 17:35:59)
No13761 (はつね さん) に返信
> もしかしたら、GrapeCityのSPREADとか使っているのですか?
> それとも、何か独自のコンポーネントを作って、そこにExportToExcelメソッドがあるのですか?
>
> 前者であれば、SPREADのヘルプファイルにサンプル乗っていませんか?

はつね様
返信ありがとうございます!!

GrapeCityのSPREADも独自のコンポーネントも使っておらず、
コード上で、[データグリッド名]カンマ(.)と入力すると、
一覧の中に[ExportToExcel]があったので、多分標準のVB2005だと思います。。
(もし間違っていたらごめんなさい。)

ヘルプを表示しても「Me.C1TrueDBGrid1.ExportToExcel("c:\temp\composers.xls")」
という例しか載っておらず、私の端末で上記を実行すると、下記のエラーで実行できないんです。

---------------------------------------------------------------------------------------------
C1.C1Preview.2.dll または C1.Win.C1Preview.2.dll を初期化できません。
これらの dll が利用可能かどうか、そして正しくインストールされているかどうかを確認して下さい。
---------------------------------------------------------------------------------------------

どの様にしたらよろしいでしょうか。
何卒よろしくお願い致します。
>
引用返信 編集キー/
■13769 / inTopicNo.6)  Re[5]: vb.netからExcelファイルを出力したい
□投稿者/ 特攻隊長まるるう (118回)-(2008/02/04(Mon) 18:42:42)
No13763 (初心者 さん) に返信
>ヘルプを表示しても「Me.C1TrueDBGrid1.ExportToExcel("c:\temp\composers.xls")」
思いっきり GrapeCity やん(><
http://www.grapecity.com/japan/support/database/P7_341.htm

>多分標準のVB2005だと思います。。
違います。
エラーメッセージの通りですが、GrapeCity のソフトをちゃんとインストールしましたか?
引用返信 編集キー/
■13774 / inTopicNo.7)  Re[5]: vb.netからExcelファイルを出力したい
□投稿者/ はつね (425回)-(2008/02/04(Mon) 19:33:50)
はつね さんの Web サイト
No13763 (初心者 さん) に返信
> ヘルプを表示しても「Me.C1TrueDBGrid1.ExportToExcel("c:\temp\composers.xls")」
> という例しか載っておらず、私の端末で上記を実行すると、下記のエラーで実行できないんです。
>
> ---------------------------------------------------------------------------------------------
> C1.C1Preview.2.dll または C1.Win.C1Preview.2.dll を初期化できません。
> これらの dll が利用可能かどうか、そして正しくインストールされているかどうかを確認して下さい。
> ---------------------------------------------------------------------------------------------

特攻隊長まるるうさんの書かれているようにGrapeCityのコンポーネントですね。
http://www.grapecity.com/japan/support/Search/FaqContent.asp?id=21326

引用返信 編集キー/
■13803 / inTopicNo.8)  Re[6]: vb.netからExcelファイルを出力したい
□投稿者/ 初心者 (52回)-(2008/02/05(Tue) 09:30:42)
No13769 (特攻隊長まるるう さん) に返信
> 思いっきり GrapeCity やん(><
> http://www.grapecity.com/japan/support/database/P7_341.htm
>
> >多分標準のVB2005だと思います。。
> 違います。
> エラーメッセージの通りですが、GrapeCity のソフトをちゃんとインストールしましたか?
>

No13774 (はつね さん) に返信
> 特攻隊長まるるうさんの書かれているようにGrapeCityのコンポーネントですね。
> http://www.grapecity.com/japan/support/Search/FaqContent.asp?id=21326

特攻体調まるるう様
はつね様

返信ありがとうございます。
そして大変失礼致しました(TT;)

初心者な上に、元々あるシステムの機能追加作業で、
何を使用しているのか等ぜんぜん理解しておりませんでした。
(メソッド&カンマで出てきたヒント(?)は全て標準のVB2005なのかと・・。)

本当に大変失礼致しました。

私が今機能追加を行っているシステムの他の画面なのですが、
「グリッド名.ExportToDelimitedFile」(グリッドからCSV出力)が正常に動作しているので、
そこを参考に「グリッド名.」を入力して探して「ExportToExcel」を使用しようと思いました。

特攻体調まるるう様、はつね様に御教授頂いた「GrapeCity」はインストールされていて、
(プログラムの追加と削除で[Power Tools True DBGrid for .NET 2.0J]があることを確認しました。)
システムの参照設定を確認した所、「C1.Win.C1Preview.2.dll」はあったのですが、
「C1.C1Preview.2.dll」がなく、これが原因である事が分かりました。

ありがとうございました!!
本当にすごく助かりました!!

又、もう一点だけ質問をさせて頂きたいのですが、上記「ExportToExcel」を使用して、
グリッドの一部のみを出力という処理が不可能だった場合、はつね様に教えて頂いた
ExcelとCOM連携での出力に挑戦したいと思っております。

昨日、はつね様に教えて頂いた段階で、少しコードを書いて(コピーして)みたのですが、
参照設定に「Microsoft Excel *.* ObjectLibrary」を追加して
[Excel.Application]の下の波線は消えたのですが、[MRComObject]の下の波線は
消えず、エラーとして残ってしまいました。

[MRComObject]も何か参照設定を追加しないといけないのでしょうか??
度重なる質問で申し訳ございません。

何卒御教授よろしくお願い致します。

----------------------------------------------------------------------------------
''プロジェクト→参照の追加→COM→Microsoft Excel *.* ObjectLibrary
'(1)================== 起動時の処理 ===================
Dim xlApp As New Excel.Application
Dim xlBooks As Excel.Workbooks = xlApp.Workbooks
'新規のファイルを開く場合
Dim xlBook As Excel.Workbook = xlBooks.Add
Dim xlSheets As Excel.Sheets = xlBook.Worksheets
Dim xlSheet As Excel.Worksheet = xlSheets.Item(1)
xlApp.Visible = True 'Excelを表示(必ずとも表示しなくてもよい)
'====================== 起動処理ここまで ===============

'================== データの入力処理 ==================
Dim xlRange As Excel.Range
Dim strDat(2, 0) As Object
xlRange = xlSheet.Range("A5:A7") 'データの入力セル範囲
strDat(0, 0) = "10" 'データの作成
strDat(1, 0) = "20"
strDat(2, 0) = "=Sum(A5:A6)" '計算式
xlRange.Value = strDat 'セルへデータの入力

'又は、
Dim xlCells As Excel.Range
Dim xlRange1 As Excel.Range
xlCells = xlSheet.Cells
xlRange1 = xlCells(5, 3)
xlRange1.Value = "12"
MRComObject(xlRange1) 'xlRange1 の解放(都度解放しないとだめ)
xlRange1 = xlCells(6, 3)
xlRange1.Value = "34"
MRComObject(xlRange1) 'xlRange1 の解放(都度解放しないとだめ)
xlRange1 = xlCells(7, 3)
xlRange1.Value = "=C5+C6"
MRComObject(xlCells) 'xlCells の解放(こちらは1回でOK)
MRComObject(xlRange1) 'xlRange1 の解放
MRComObject(xlRange) 'xlRange の解放
'================== データの入力処理ここまで ==================


'(3)================== ファイルの保存処理 ==================
Dim xlFilePath As String = "c:\Test1.xls" '保存ファイル名
xlApp.DisplayAlerts = False '保存時の問合せのダイアログを非表示に設定
xlSheet.SaveAs(xlFilePath) 'ファイルに保存

xlApp.DisplayAlerts = True '元に戻す

'(3)================== 終了処理 =====================
MRComObject(xlSheet) 'xlSheet の解放
MRComObject(xlSheets) 'xlSheets の解放
xlBook.Close(False) 'xlBook を閉じる
MRComObject(xlBook) 'xlBook の解放
MRComObject(xlBooks) 'xlBooks の解放
xlApp.Quit() 'Excelを閉じる
MRComObject(xlApp) 'xlApp を解放
Dim oExcel As Object
Dim oBook As Object
Dim oSheet As Object

'Start a new workbook in Excel.
oExcel = CreateObject("Excel.Application")
oBook = oExcel.Workbooks.Add

'Add data to cells of the first worksheet in the new workbook.
oSheet = oBook.Worksheets(1)
oSheet.Range("A1").Value = "Last Name"
oSheet.Range("B1").Value = "First Name"
oSheet.Range("A1:B1").Font.Bold = True
oSheet.Range("A2").Value = "Doe"
oSheet.Range("B2").Value = "John"

'Save the Workbook and quit Excel.
oBook.SaveAs("マイ ドキュメント\" & "Book1.xls")
oSheet = Nothing
oBook = Nothing
oExcel.Quit()
oExcel = Nothing
GC.Collect()

----------------------------------------------------------------------------------

引用返信 編集キー/
■13807 / inTopicNo.9)  Re[7]: vb.netからExcelファイルを出力したい
□投稿者/ はつね (428回)-(2008/02/05(Tue) 09:44:52)
はつね さんの Web サイト
No13803 (初心者 さん) に返信
> 昨日、はつね様に教えて頂いた段階で、少しコードを書いて(コピーして)みたのですが、
> 参照設定に「Microsoft Excel *.* ObjectLibrary」を追加して
> [Excel.Application]の下の波線は消えたのですが、[MRComObject]の下の波線は
> 消えず、エラーとして残ってしまいました。

そのMRComObjectを使っている部分は、どこからコピーしてきたのですか?
前に提示したURL先にはなかったような。

引用返信 編集キー/
■13811 / inTopicNo.10)  Re[8]: vb.netからExcelファイルを出力したい
□投稿者/ じゃんぬねっと (540回)-(2008/02/05(Tue) 10:26:46)
> MRComObject

花ちゃんさんのところだと思いますが、私は反対です。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=42975&forum=7
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -