none
请教,vb.net 应用程序,如何实现像excle一样的表格 RRS feed

  • 问题

  • 环境: XP SP3
              Microsoft Visual Studio 2005
              VB.Net

    想法: 想做一个像excle的表格,由单元格组成,可修改单元格内容;

              可增加、插入、删除行;

              表格数据读取access数据库,修改后,再导回access;


    请教各位,有没有已有的控件可以解决? 或者提供一下方法,思路?  谢谢!


    2009年5月2日 8:05

答案

  • Hi icetom,

    我曾经写过这样的实例,是用DataGridView实现功能的,对于数据库的读取和更新,你可以用System.Data.OleDb命名空间下的类来做数据更新。
    请参考这个实例(此实例是用C#代码写的):
    http://social.msdn.microsoft.com/Forums/en-US/winformsdatacontrols/thread/a884fe41-4ab1-4cc1-a7f3-3a31e9b68800

    如果你觉得英文阅读和理解C#代码有困难,我已经将实例中的代码转换成了VB.NET的代码,以下就是VB.NET的代码
    Imports System.Data.OleDb

    Public Class Form1

        Private connString As String
        Private oledbConn As OleDbConnection
        Private oledbCommBuilder As OleDbCommandBuilder
        Private oledbDA As OleDbDataAdapter
        Private ds As DataSet

        Public Sub New()
            InitializeComponent()
            connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Database1.mdb;"
            oledbConn = New OleDbConnection(connString)
            oledbDA = New OleDbDataAdapter("select * from table1", oledbConn)
            oledbCommBuilder = New OleDbCommandBuilder(oledbDA)
            ds = New DataSet()
            Try
                oledbDA.Fill(ds)
                DataGridView1.DataSource = ds
                DataGridView1.DataMember = "table"
            Catch exp As Exception
                MessageBox.Show(exp.Message)
            End Try
        End Sub
        Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
            oledbDA.Update(ds)
        End Sub
    End Class

    如果你有什么问题,敬请回复!

    Sincerely,
    Kira Qian


    Please mark the replies as answers if they help and unmark if they don't.
    2009年5月5日 9:33

全部回复

  • 可以的呀,DATAGRIDVIEW不就能实现么?
    从工具箱中"数据"里拖个DATAGRIDVIEW控件到窗体中,在它的右上角有个小箭头,鼠标单击后,单击添加列......即可
    读取和写入ACCESS不是太难呀
    2009年5月2日 12:20
  • 你好!
         你试试ReportViewer控件,看看能否满足你的需求!
    周雪峰
    2009年5月2日 14:05
    版主


  • to  难啃的VB         : DATAGRIDVIEW 我只找到数据如何导入、导出处理, 没找到如何做成excel表格的方法。



    我怕我说得不太清楚, 重复一下:


    我的需求:

    在from 上 显示一张表格, 由单元格组成, 数据从access读出。

    用户 可以对 单元格内容进行修改, 可以插入、删除行, 可以筛选内容。

    用户 修改数据后, 数据再写入access。


    我的疑问:

    导入导出access部分应该不难, 我现在不懂如何实现类似excel的操作(单元格修改,行操作,筛选)


    谢谢。


    2009年5月3日 3:30

  • to  周雪峰MVP, 版主 :   我查资料,从例子看, ReportViewer 是实现报表,一般不可修改,  显示的结构 与我想实现的excel 表格(由单元格组成)不一样。

                                      我没有用过这个控件,不知道是否我还没有看到你想引导我的方向, 如果是,麻烦您再描述一下, 谢谢:)
    2009年5月3日 3:35
  • 你好,你可以使用 DataGridView 和 OleDbDataAdapter 来完成你的需要
    通过 OleDbDataAdapter 从 Access 获取数据源,然后绑定到DataGridView 控件上,这里可以在网格上做任意的增删改操作(你的操作将直接修改到刚才获取的数据源), 这里可以使用 OleDbDataAdapter.Update(DataSet) 方法完成将刚才的修改保存到Access数据库,大概就是这样。

    知识改变命运,奋斗成就人生!
    2009年5月3日 5:42
    版主
  •  
      to X.X.Y     :   谢谢,  我再研究一下 DataGridView 。


      谢谢      难啃的VB         ,   周雪峰MVP, 版主  !
    2009年5月3日 15:59
  • lz  您可以下载安装 offiice  web compoment
    然后引用 offiice  web compoment 11/12 的ocx 组建   里面的PTable 就是精简版本的excel 
    工作突然有点忙 嘿嘿
    2009年5月4日 0:01
  • Hi icetom,

    我曾经写过这样的实例,是用DataGridView实现功能的,对于数据库的读取和更新,你可以用System.Data.OleDb命名空间下的类来做数据更新。
    请参考这个实例(此实例是用C#代码写的):
    http://social.msdn.microsoft.com/Forums/en-US/winformsdatacontrols/thread/a884fe41-4ab1-4cc1-a7f3-3a31e9b68800

    如果你觉得英文阅读和理解C#代码有困难,我已经将实例中的代码转换成了VB.NET的代码,以下就是VB.NET的代码
    Imports System.Data.OleDb

    Public Class Form1

        Private connString As String
        Private oledbConn As OleDbConnection
        Private oledbCommBuilder As OleDbCommandBuilder
        Private oledbDA As OleDbDataAdapter
        Private ds As DataSet

        Public Sub New()
            InitializeComponent()
            connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Database1.mdb;"
            oledbConn = New OleDbConnection(connString)
            oledbDA = New OleDbDataAdapter("select * from table1", oledbConn)
            oledbCommBuilder = New OleDbCommandBuilder(oledbDA)
            ds = New DataSet()
            Try
                oledbDA.Fill(ds)
                DataGridView1.DataSource = ds
                DataGridView1.DataMember = "table"
            Catch exp As Exception
                MessageBox.Show(exp.Message)
            End Try
        End Sub
        Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
            oledbDA.Update(ds)
        End Sub
    End Class

    如果你有什么问题,敬请回复!

    Sincerely,
    Kira Qian


    Please mark the replies as answers if they help and unmark if they don't.
    2009年5月5日 9:33