通过窗体向EXCEL表单添加数据

        我们经常用Excel制作各种表格,如公司管理人员制作公司成员的名单表;推销员制作客户名单表等。单纯利用Excel的功能我们会发现有如下几个问题:
  1、容易出错。
  2、不能检查是否重复输入登记。
  3、经常重复输入相同的内容。

  而通过VBA在Excel中建立窗体,通过窗体向Excel输入数据,可以避免以上问题。本例是一个简单的登记程序,其功能是通过窗体来向工作表中添加数据。下面是应用系统的建立过程。

一、创建用户窗体

        1.打开EXCEL,打开Visual Basic 编辑器(工具-->宏-->Visual Basic 编辑器)

        2.选择菜单中“插入”、“添加用户窗体”命令。

            在窗体上拖两个Label(姓名,电话)  两个TextBox(ID:txtName,txtTel)  两个按钮(输入 取消)

       3.根据情况,自设窗体大小

二、对控件进行功能设置
  用鼠标选中窗体上的控件并双击该控件或者用鼠标右键单击控件并选择“查看代码”命令,进入窗体对象的编程环境。

       输入按钮:

Private   Sub CommandButton1_Click()
    
'下面是当在窗体上单击“输入”按钮运行的代码
    
    
Dim counter As Integer  '计数器
    Dim sign As Boolean    '是否登记标志
    
    counter 
= 0
    sign 
= True

    
'验证用户是否已登记过
    Range("A1").Select
    
Do Until Selection.Offset(counter, 0).Value = ""
        
If txtName.Text = Selection.Offset(counter, 0).Value Then '验证判断条件:姓名(根据需求,可调整)
            sign = False
            
MsgBox ("此用户已经登记")
        
End If
        counter 
= counter + 1
    
Loop
    
Do Until Selection.Offset(counter, 0).Value = ""
       counter 
= counter + 1
    
Loop
    
    
'登记信息(根据需求,可调整)
    If sign Then
        Selection.Offset(counter, 
0).Value = txtName.Text
        Selection.Offset(counter, 
1).Value = txtTel.Text
    
End If

End Sub
     取消按钮:
Private   Sub CommandButton2_Click()

    UserForm1.Hide
    
End Sub

 

三.在Excel中引用窗体

     1.在VB辑编器中添加宏(模块)

       Sub Macro1()
             UserForm1.Show
       End Sub

     2.切换到EXCEL,添加命令按钮(视图-->工具栏-->窗体-->弹出工具框)

       选择工具框中的按钮,在点击EXCEL表单任意处会自动弹出“指定宏”窗口,选择Macro1宏。

       修改按钮文本:右击按钮可以找到编辑文字属性

      设置完毕后,点击按钮就能打开数据录入窗体了。

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要实现这个功能,你需要进行以下步骤: 1. 在Winform窗体添加一个“打开文件”按钮,让用户可以选择要导入的Excel文件。 2. 使用C#的Excel Interop库或第三方库,读取Excel文件中的数据。如果数据量很大,可以考虑使用分页读取的方式,避免内存溢出。 3. 将读取到的数据存储在内存中,可以使用List、DataTable等数据结构。 4. 使用C#的MySQL Connector库连接到MySQL数据库,将数据写入数据库中。同样需要考虑性能问题,可以使用事务等方式提高写入效率。 下面是一个简单的示例代码,供参考: ```csharp using System; using System.Collections.Generic; using System.Data; using System.Windows.Forms; using MySql.Data.MySqlClient; using Excel = Microsoft.Office.Interop.Excel; namespace ExcelToMySQL { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnOpen_Click(object sender, EventArgs e) { // 打开Excel文件 OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Excel文件|*.xlsx;*.xls"; if (openFileDialog.ShowDialog() == DialogResult.OK) { // 读取Excel文件中的数据 Excel.Application excel = new Excel.Application(); Excel.Workbook workbook = excel.Workbooks.Open(openFileDialog.FileName); Excel.Worksheet worksheet = workbook.Sheets[1]; Excel.Range range = worksheet.UsedRange; List<string[]> dataList = new List<string[]>(); for (int i = 2; i <= range.Rows.Count; i++) { string[] data = new string[range.Columns.Count]; for (int j = 1; j <= range.Columns.Count; j++) { data[j - 1] = range.Cells[i, j].Value.ToString(); } dataList.Add(data); } workbook.Close(); excel.Quit(); // 将数据写入MySQL数据库 string connStr = "server=localhost;user=root;database=test;password=123456;"; MySqlConnection conn = new MySqlConnection(connStr); conn.Open(); MySqlTransaction transaction = conn.BeginTransaction(); try { foreach (string[] data in dataList) { string sql = "INSERT INTO table_name (column1, column2, column3) VALUES (@value1, @value2, @value3)"; MySqlCommand command = new MySqlCommand(sql, conn, transaction); command.Parameters.AddWithValue("@value1", data[0]); command.Parameters.AddWithValue("@value2", data[1]); command.Parameters.AddWithValue("@value3", data[2]); command.ExecuteNonQuery(); } transaction.Commit(); MessageBox.Show("导入成功!"); } catch (Exception ex) { transaction.Rollback(); MessageBox.Show("导入失败:" + ex.Message); } conn.Close(); } } } } ``` 在上面的示例代码中,需要将“table_name”和“column1/2/3”替换成实际的表名和列名。此外,还需要将“server”、“user”、“database”和“password”替换成实际的MySQL连接信息。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值