当前位置: 代码迷 >> VB Dotnet >> 如何用oledb 方式 把datatable数据保存到EXCEL中
  详细解决方案

如何用oledb 方式 把datatable数据保存到EXCEL中

热度:486   发布时间:2016-04-25 02:03:28.0
怎么用oledb 方式 把datatable数据保存到EXCEL中
本帖最后由 lgk99 于 2015-04-09 23:33:07 编辑
想用OLE DB实现从EXCEL文件读取数据到程序的DATATABLE中,然后用datagrid修改,随后保存修改到DATATABLE中,最后保存回EXCEL文件(指定路径,方便下一次程序读取)中。

1.把datatable保存到EXCEL中去的代码不会写,请问大家指点!
2.用OLE DB读取EXCEL文件已经实现,代码如下:



Private Sub btn_LoadExcel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_LoadExcel.Click
        Dim path, EXCEL_FileName As String
        Dim conn_string As String    '连接EXCEL的字符串
        Me.OpenFileDialog1.Title = "选择Excel文件"

        If Me.OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
            path = System.IO.Path.GetFullPath(OpenFileDialog1.FileName)   '获取文件的完整路径
            EXCEL_FileName = System.IO.Path.GetFileName(OpenFileDialog1.FileName)
            EXCEL_FileName = Microsoft.VisualBasic.Left(EXCEL_FileName.ToUpper, EXCEL_FileName.Length - 5) '获取EXCEL文件名(不含扩展名)
          
            conn_string = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & path & ";Extended Properties='Excel 12.0;HDR=YES';"                                  '定义连接字符串
           
            Dim EXCEL_conn As OleDbConnection = New OleDb.OleDbConnection   '定义连接对象
            EXCEL_conn.ConnectionString = conn_string                       '把连接字符串赋值给连接对象
            EXCEL_conn.Open()                                                                     '打开连接
            Dim command_loadExcel As String = "select * from [Sheet1$]"     '定义OleDbDataAdapter中用的SELECT语句字符串
            Dim excel_adapter As New OleDbDataAdapter(command_loadExcel, EXCEL_conn)  '定义OleDbDataAdapter对象
            '定义DATAtable
            excel_adapter.Fill(Excel_DataTable)                              '用OleDbDataAdapter填充DATAtable

            MessageBox.Show("导入EXCEL到DataTable成功!!!")
            DataGridView1.DataSource = Excel_DataTable                       '用DataGridView显示DataTable数据
            EXCEL_conn.Close()

        End If

    End Sub


------解决思路----------------------
建议用NPOI组件处理
------解决思路----------------------
两个方法
1、可以用vb.net调用excel对文件进行任何操作,网上有很多代码,楼主很容易找到,由于.net的机制,内存非常不容易控制,excel可以调用但是退不出去。vb6在这方面倒是好用的多。
2、用控件。比如component one组件里面就有一个c1excel控件,很好用。NPOI也是个不错的东东。

我觉得oledb操作excel并不是他的强项,当然不好用或者用不了,既然如此何必强求?
  相关解决方案