EXCEL导入到Datagridview的内容并实时更新到.mdb中的表1里面

时间:2022-11-22 14:46:49
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;//获取鼠标事件
using System.IO;
using System.Data.OleDb;

namespace 主程序
{
    public partial class 货品清单 : Form
    {

        public 货品清单()
        {
            InitializeComponent();//初始化
        }
        private void 货品清单_Load(object sender, EventArgs e)
        {

            this.KeyPreview = true;//启用快捷键功能
            this.表2TableAdapter.Fill(this.database1DataSet.表1);//加载数据库数据
        }
        //注册ESC关闭窗口
        private void 货品清单_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.Escape) //如果按ESC键,则关闭当前窗口
            {
                this.Close();
            }
        }
        //导入表格数据   
        private void button4_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();//首先根据打开文件对话框,选择要打开的文件
            ofd.Filter = "Excel表格|*.xlsx|Excel97-2003表格|*.xls|所有文件|*.*";//打开文件对话框筛选器,默认显示文件类型
            string strPath;//定义文件路径
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    strPath = ofd.FileName;
                    //string sss = ofd.SafeFileName;//获取文件名称
                    string fileType = System.IO.Path.GetExtension(strPath);//获取文件的后缀
                    string strCon = "";
                    if (fileType == ".xls")//如果为97-2003格式文件
                    {
                        strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strPath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";
                    }
                    else//如果为2007格式文件
                    {
                        strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strPath + ";Extended Properties='Excel 12.0;HDR=YES;IEMX=1'";
                    }
                    OleDbConnection conn = new OleDbConnection(strCon);
                    Application.DoEvents();
                    string strSql = "select * from [数据段1$]";
                    OleDbCommand Cmd = new OleDbCommand(strSql, conn);
                    OleDbDataAdapter da = new OleDbDataAdapter(Cmd);
                    DataSet ds = new DataSet();
                    da.Fill(ds, "插入表");
                    dataGridView1.DataSource = ds.Tables[0];
                    dataGridView1.AllowUserToAddRows = false;
                    dataGridView1.AllowUserToDeleteRows = false;
                    //MessageBox.Show(sss);

                }
                catch (Exception ex)
                {

                    MessageBox.Show(ex.Message);//捕捉异常
                }
            }
        }
    }
}

4 个解决方案

#1


你的问题是什么?

#2


引用 1 楼 shoppo0505 的回复:
你的问题是什么?

怎么样在用户导入数据到Datagridview后,同步更新到mdb里,双击修改Datagridview里的内容,同步更新到mdb里

#3


你已经有ds.Tables[0]内容了。
你可以扩展以下button4_Click的内容,在后面再添加一个数据库链接,直接将ds.Tables[0]的内容再写入数据库。

#4


引用 3 楼 shoppo0505 的回复:
你已经有ds.Tables[0]内容了。
你可以扩展以下button4_Click的内容,在后面再添加一个数据库链接,直接将ds.Tables[0]的内容再写入数据库。


            this.表2TableAdapter.Fill(this.database1DataSet11.表2);
现在是用的这种方式连接的数据库,后面怎么把刚导入的数据更新到数据库里

#1


你的问题是什么?

#2


引用 1 楼 shoppo0505 的回复:
你的问题是什么?

怎么样在用户导入数据到Datagridview后,同步更新到mdb里,双击修改Datagridview里的内容,同步更新到mdb里

#3


你已经有ds.Tables[0]内容了。
你可以扩展以下button4_Click的内容,在后面再添加一个数据库链接,直接将ds.Tables[0]的内容再写入数据库。

#4


引用 3 楼 shoppo0505 的回复:
你已经有ds.Tables[0]内容了。
你可以扩展以下button4_Click的内容,在后面再添加一个数据库链接,直接将ds.Tables[0]的内容再写入数据库。


            this.表2TableAdapter.Fill(this.database1DataSet11.表2);
现在是用的这种方式连接的数据库,后面怎么把刚导入的数据更新到数据库里