C# 将Excel导入MySql-外部表不是预期格式

C# 将Excel导入MySql-外部表不是预期格式,c#,.net,mysql,excel-2007,C#,.net,Mysql,Excel 2007,我正在尝试将.xlsx文件(MS Excel 2007)导入数据库(我的SQL)。 它在我的本地PC上工作,但在应用程序在IIS6下运行的服务器PC上不工作 这是Try-Catch子句引发的错误消息 An external table is not in the expected format. 我已安装Microsoft Access数据库引擎2010可再发行版 以及服务器PC中的2007 Office系统驱动程序 这是密码 private void vIPToolStripMen

我正在尝试将.xlsx文件(MS Excel 2007)导入数据库(我的SQL)。 它在我的本地PC上工作,但在应用程序在IIS6下运行的服务器PC上不工作

这是Try-Catch子句引发的错误消息

 An external table is not in the expected format.
我已安装Microsoft Access数据库引擎2010可再发行版 以及服务器PC中的2007 Office系统驱动程序

这是密码

    private void vIPToolStripMenuItem_Click(object sender, EventArgs e)
    {
        fiDatabase = null;
        ofdDatabase.Title = "Select VIP list to input";
        ofdDatabase.Filter = "Excel Files|*.xlsx";
        if (ofdDatabase.ShowDialog() == DialogResult.OK)
        {
            fiDatabase = new FileInfo(ofdDatabase.FileName);
            if (fiDatabase.Exists)
            {
                DeleteVIPList();

                lblDateCreated.Text = fiDatabase.CreationTime.ToShortDateString();
                lblDatabase.Text = fiDatabase.Name;
                lblLocation.Text = fiDatabase.DirectoryName;
                lblSize.Text = String.Format("{0:0,0.0}", fiDatabase.Length) + " byte";
                btnLoadDatabase.Visible = true;
                file = new StreamReader(fiDatabase.FullName);

                OleDbConnection theConnection =
                    new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\\VIPLIST092211.xlsx;Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\";");
                try
                {
                    theConnection.Open();
                    OleDbDataAdapter theDataAdapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", theConnection);
                    DataSet theDS = new DataSet();
                    DataTable dt = new DataTable();
                    theDataAdapter.Fill(dt);
                    theConnection.Close();

                    dgvCustomer.DataSource = dt.DefaultView;

                    lblRecord.Text = dgvCustomer.Rows.Count.ToString();

                    update = new Update();
                    update.connectionString = MyCon;
                    update.UpdateVIPList(dt);
                }
                catch (Exception ex) 
                {
                    MessageBox.Show(ex.Message);
                }
            }
            else
            {
                MessageBox.Show("No Database Selected");
            }
        }
    }
我在“theConnection.Open()中找到了错误消息” 如果以前有人遇到过这个问题,请与我分享解决方案。 谢谢。

我的建议

要从excel将批量数据上传到mysql,您可以使用csv格式,这更方便,并且不需要在服务器pc中安装任何驱动程序。以下是步骤

1) 使用“另存为”选项以csv格式保存excel

2) 订购 按表格格式列出

3) 运行以下查询

装载 数据本地填充“E:\FileName.csv”到表模板字段中 以“,”结尾,以“,”结尾的行\n” (第1列、第2列、第3列、第4列)


但这取决于你的用例

你能发布你的UpdatePlist方法吗

我不确定,但也许您需要在DataTable上循环以插入表中的每一行

例如:

      foreach(DataRow drow in dt.Rows)
       {   
                string mycolumnName = drow["ColumName"].ToString();   
                // Loop Per Row then Update
                update = new Update();
                update.UpdateVIPList(mycolumnNam);
       }
在哪里

public bool UpdateVIPList(string mycolumnname)
     {

       //Your insert Logic Insert into Table (..) values (...)
       //Do stuff
        return true;
     } 

关于

您说它只在本地主机上工作。问题可能出在您的连接字符串中,您指定了“Data Source=c:\VIPLIST092211.xlsx”作为当前主机上的确切路径。但是此文件也必须可以从服务器主机访问。您应该为您的客户端共享此文件。

您可以发布您的UpdateVIPList方法吗?非常感谢谢谢你的回答。我真的很感谢你的帮助