tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルDataGridView表示内容をxlsで保存
記事No10640
投稿日: 2011/12/15(Thu) 16:58
投稿者でらでら
Visual Basic 2008を使用してプログラミングしています.
(プログラミング歴は数カ月の初心者です)

DataGridViewにxlsファイルを表示して,DataGridView上で編集できる環境まで整える事が出来ました.
その後の,編集後のDataGridViewに表示されている内容をxlsファイルに保存するプログラミングで止まっています.
[保存]ボタンを押すとローカルに保存動作するように設定しております.
(読み込むxlsファイルは1つなので,保存時は上書き保存され,確認画面などはブロックしたいと思っています.)

ADO.NETを使用するようなHPを見ましたが理解できませんでした...

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 保存.Click

        Dim xExcel As Object
        Dim xBook As Object
        Dim xSheet As Object

        xExcel = CreateObject("Excel.Application")
        xBook = xExcel.Workbooks.Add

        xBook.SaveAs(Application.StartupPath(), "appdata\Book1.xls")
        xSheet = Nothing
        xBook = Nothing
        Marshal.ReleaseComObject(xSheet)
        Marshal.ReleaseComObject(xBook)
        Marshal.ReleaseComObject(xExcel)
        xExcel.Quit()
        xExcel = Nothing

    End Sub

ここまで出来たのですが,ここから先が行き詰まっています.
(ここまでが合っているかも不明)

アドバイスを頂けると有り難いです.
宜しくお願いします.

[ツリー表示へ]
タイトル追記
記事No10641
投稿日: 2011/12/15(Thu) 18:33
投稿者でらでら
DataGridViewには以下で表示させています(拾いものを使っています).

        Using cn As New System.Data.OleDb.OleDbConnection
            Dim FileName As String = System.IO.Path.Combine(Application.StartupPath(), "appdata\kr.xls")
            Dim SheetName As String = "Sheet1"
            cn.ConnectionString = "provider=Microsoft.jet.OLEDB.4.0;Data source=" & FileName & ";Extended properties=""Excel 8.0;HDR=YES;IMEX=1"""
            Using da As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter("SELECT * FROM [" & SheetName & "$]", cn)
                Dim ds As New DataSet
                da.Fill(ds, SheetName & "$")
                DataGridView1.DataSource = ds.Tables(SheetName & "$")
            End Using
        End Using

[ツリー表示へ]
タイトルRe: DataGridView表示内容をxlsで保存
記事No10642
投稿日: 2011/12/15(Thu) 20:21
投稿者魔界の仮面弁士
> cn.ConnectionString = "provider=Microsoft.jet.OLEDB.4.0;Data source="
この OleDb Provider はエクスポートにも対応しており、
Excel 本体無しで xls ファイルを作る機能もあったりします。

xlsファイルの更新、行追加なども可能ですが、データの削除や
細かい書式設定等には非対応です。そのため、細かい制御が
必要な場合には、Excel.Application を使った方が便利でしょうね。


> xExcel = CreateObject("Excel.Application")
> xBook = xExcel.Workbooks.Add
このコードだと、Excel が正常に終了しないという問題を引き起こします。
具体的な対処方法は、http://hanatyan.sakura.ne.jp/dotnet/index.html
[Excel・Word・他]のトピックを参照してみてください。

> xBook.SaveAs(Application.StartupPath(), "appdata\Book1.xls")
保存はできていますが、肝心のデータを渡す処理が書かれていないようですね。
上記の URL には、Excel のセルにデータを書き込む方法も記載されていますので
それらを組み合わせることで、目的を達成できるかと思います。

[ツリー表示へ]