none
[VB2008] DataGridView資料寫入Excel中 RRS feed

  • 問題

  • 想請教各位大大
    在VB的DataGridView中的資料
    要如何寫到Excel中呢??

    爬過多文
    都是講述VB6.0的

    VB6.0的寫法如下:
    Dim objXls As New Excel.Application
    Dim wbXls As New Excel.Workbook
    Dim wsXls As New Excel.Worksheet

    objXls.Visible=True
    Set wbXls=objXls.Workbooks.Add
    Set wsXls=wbXls.Worksheets(1)
    ......

    在這個部分小弟就已經亂了
    VB2008好像沒有這種方法可以建立 Excel 檔案吧??
    請各位大大給小弟一點指教
    感恩...
    2009年4月4日 下午 12:23

所有回覆

  • 風箏:
          我記得這方法不是會開啟一個Excel出來嗎?
          類似這個語法的東西在MSDN文件就有了.
          [Microsoft Excel 技術範例]

    2009年4月4日 下午 01:00
    版主
  • 是啊
    是會開啟一個Excel檔
    跟我原本設計的不一樣
    原本的設計是覆蓋原始的Excel檔

    實在是想不出來該怎麼寫...
    2009年4月4日 下午 01:03
  • 剛剛依照心大給的建議去思考後
    寫出下面的code

            Dim xlsApp As New Object
            Dim xlsSheet As Object
            'Dim WorkSheetName As String
            xlsApp = CreateObject("Excel.Application")
            xlsApp.workbooks.open(Open_File)
            xlsSheet = xlsApp.Worksheets("Sheet2")

            Dim k As Integer

            For k = 0 To DataView.Columns.Count - 1
                xlsSheet.cells(1, k + 1) = MDS.Tables(0).Columns(k).Caption
            Next

            Dim i As Integer
            Dim j As Integer

            For i = 0 To MDS.Tables(0).Rows.Count - 1
                For j = 0 To MDS.Tables(0).Columns.Count - 1
                    xlsSheet.cells(i + 2, j + 1) = MDS.Tables(0).Rows(i).Item(j)
                Next j
            Next i

    在這行"xlsSheet = xlsApp.Worksheets("Sheet2")"一直出現問題
    "類型 'System.Runtime.InteropServices.COMException' 的未處理例外狀況發生於 Microsoft.VisualBasic.dll"
    "其他資訊: 無效的索引。 (發生例外狀況於 HRESULT: 0x8002000B (DISP_E_BADINDEX))"

    但檢查過Excel檔
    的確有"Sheet2"這個shee啊...
    怪...

    2009年4月4日 下午 02:08
  • Dim xlBook = xlsApp.workbooks.open(Open_File)
    xlsSheet = xlBook.Sheets("Sheet2")

    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年4月4日 下午 03:21
  • 心大
    還是一樣的訊息喔...
    我再思考思考...爬爬文
    2009年4月4日 下午 11:26
  • 如果這樣會錯的話,通常是你的 Open_File 裡面沒有 Sheet2 這個頁籤,用 Excel 打開看看內容。
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年4月5日 上午 12:54
  • 小弟可以確定...Open_File裡面有Sheet2
    早上想了很久
    後來丟一邊不管跑去陪兒子玩
    現在就正常了
    怪...
    code沒改呀...

    不過現在有另一個問題

            For k = 0 To DataView.Columns.Count
                xlsSheet.cells(1, k + 1) = MDS.Tables(0).Columns(k).Caption
            Next

    這邊一直出現找不到資料行3...
    Excel資料如下:
    ABC  Nam  Data
    1       a      asdf
    2       b      ghjk
    3       c      qwer
    4       d      tyui

    載入DataGridView每列的前方會出現一個CheckBox
    而在寫回Excel時
    不需要把CheckBox寫回

    2009年4月5日 上午 09:44
  • 小弟可以確定...Open_File所引入的Excel檔案中有Sheet2
    早上的code沒修改
    剛剛執行卻又可以pass到下一行
            For k = 1 To DataView.Columns.Count
                xlsSheet.cells(1, k) = MDS.Tables(0).Columns(k - 1).Caption
            Next k

    不過這邊卻一直有問題
    說找不到資料行3
    所引入的Excel內容如下:
    ABC Name Data
    1 a asdf
    2 s ghjk
    3 d qwer
    4 f tyui
    5 g oplm
    6 h nbvc
    7 j xzas
    8 k dfgh
    9 l jklo
    10 q qwey

    引入顯示於DataGridView時
    每列前方會多一個CheckBox
    而寫回Excel時
    CheckBox不需要寫入...
    怪事...
    2009年4月5日 上午 09:52
  • 剛剛嘗試把每列前方的CheckBox給拿掉後
    嘗試執行
    結果是OK的(加入CheckBox就不行了)
    但寫入的資料會有問題
    若我有十筆資料
    刪除兩筆後
    寫回Excel跟txt時
    會發現excel一樣會有十筆資料
    最後兩筆會重複寫入
    但txt檔卻是正確的...
    都是用相同的dataSet啊...
    怪...
    2009年4月5日 下午 12:29