Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 错误:其他信息:外部表不是预期格式_C#_Mysql_Excel - Fatal编程技术网

C# 错误:其他信息:外部表不是预期格式

C# 错误:其他信息:外部表不是预期格式,c#,mysql,excel,C#,Mysql,Excel,需要将数据从excel导入Mysql。在将excel工作表提取到数据库表时,我收到一个错误消息 外部表不是预期的格式 在c#windows窗体应用程序中。任何人都可以找到错误的确切位置 这就是我正在尝试的 using MySql.Data.MySqlClient; using System; using System.Data; using System.Data.OleDb; using System.Data.SqlClient; using System.Windows.Forms; n

需要将数据从excel导入Mysql。在将excel工作表提取到数据库表时,我收到一个错误消息

外部表不是预期的格式

在c#windows窗体应用程序中。任何人都可以找到错误的确切位置

这就是我正在尝试的

using MySql.Data.MySqlClient;
using System;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace IMPORT
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    String MyConString = "SERVER=*******;" +
           "DATABASE=db;" +
           "UID=uid;" +
           "PASSWORD=pwd;" + "Convert Zero Datetime = True";

    private void ButtonFile_Click(object sender, EventArgs e)
    {
        OpenFileDialog openfiledialog1 = new OpenFileDialog();
        openfiledialog1.ShowDialog();
        openfiledialog1.Filter = "allfiles|*.xls";
        TextBox1.Text = openfiledialog1.FileName;
    }

    private void ButtonUpload_Click(object sender, EventArgs e)
    {

        String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
        "Data Source=" + TextBox1.Text + ";" +
        "Extended Properties=Excel 8.0;";
        OleDbConnection xlConn = new OleDbConnection(connectionString);
        xlConn.Open();
        DataTable data = new DataTable();
        OleDbCommand selectCmd = new OleDbCommand("SELECT * FROM [Sheet1$]", xlConn);

        OleDbDataAdapter xlAdapter = new OleDbDataAdapter();
        OleDbDataReader datare = selectCmd.ExecuteReader();
        xlAdapter.Fill(data);
        DataSet xlDataset = new DataSet();
        string sqlConnectionString = MyConString;

        using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
        {
            bulkCopy.ColumnMappings.Add("id", "id");
            bulkCopy.ColumnMappings.Add("password", "password");
            bulkCopy.ColumnMappings.Add("name", "name");
            bulkCopy.DestinationTableName = "TableName";
            bulkCopy.WriteToServer(datare);
            MessageBox.Show("Upload Successfull!");
        }
    }
    }
    }

提前感谢您的帮助。

除例外情况外,请确保始终关闭连接。在任何情况下,以下可能会解决您的问题:

String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
    "Data Source=" + TextBox1.Text + ";" +
    "Extended Properties=Excel 8.0;";
using (OleDbConnection excel_con = new OleDbConnection(connectionString ))
{
    excel_con.Open();

    DataTable dtExcelData = new DataTable();

    //[OPTIONAL]: It is recommended as otherwise the data will be considered as String by default.
    dtExcelData.Columns.AddRange(new DataColumn[3] { new DataColumn("Id", typeof(int)),
            new DataColumn("Name", typeof(string)),
            new DataColumn("Password",typeof(string)) });

    using (OleDbDataAdapter oda = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", excel_con))
    {
        oda.Fill(dtExcelData);
    }
    excel_con.Close();

    string consString = MyConString;
    using (SqlConnection con = new SqlConnection(consString))
    {
        using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
        {
            //Set the database table name
            sqlBulkCopy.DestinationTableName = "dbo.TableName";
            sqlBulkCopy.ColumnMappings.Add("Id", "Id");
            sqlBulkCopy.ColumnMappings.Add("Password", "Password");
            sqlBulkCopy.ColumnMappings.Add("Name", "Name");
            con.Open();
            sqlBulkCopy.WriteToServer(dtExcelData);
            con.Close();
            MessageBox.Show("Upload Successfull!");
        }
    }
}
您必须确保列名匹配并且表名正确


这是基于所找到的一个示例。

谢谢你,詹姆斯布隆德。先生现在得到一个错误附加信息:位置0处没有行。。。string sheet1=excel_con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null)。行[0][“TABLE_NAME”]。ToString();此行出错为什么在0位置不显示行???先生,请帮帮我。我已经更新了一下sheetName逻辑。您确定您的excel工作表名为Sheet1吗?请尝试以下答案:希望这对您有所帮助!。