Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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
如何解决;来自外部数据库驱动程序的意外错误“;(后跟中文字符)在SQL中导出巨大excel数据时_Sql_Excel_Import_Odbc_Oledb - Fatal编程技术网

如何解决;来自外部数据库驱动程序的意外错误“;(后跟中文字符)在SQL中导出巨大excel数据时

如何解决;来自外部数据库驱动程序的意外错误“;(后跟中文字符)在SQL中导出巨大excel数据时,sql,excel,import,odbc,oledb,Sql,Excel,Import,Odbc,Oledb,当我尝试将excel文件中的数据导入SQL数据库时,出现如下错误: 外部数据库驱动程序出现意外错误(霰呫潈ూŐీ五十) 我的代码: private void Import(string fileFullPath, string fileName, StreamWriter writer) { string ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileFullPath +

当我尝试将excel文件中的数据导入SQL数据库时,出现如下错误:

外部数据库驱动程序出现意外错误(霰呫潈ూŐీ五十)

我的代码:

private void Import(string fileFullPath, string fileName, StreamWriter writer)
{
     string ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileFullPath +
    ";Extended Properties=" + (char)34 + "Excel 12.0;HDR=YES;" + (char)34;

    using (OleDbConnection cn = new OleDbConnection(ConnectionString))
    {
        cn.Open();
        DataTable dbSchema = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
        if (dbSchema == null || dbSchema.Rows.Count < 1)
        {
            writer.WriteLine("Error: Could not determine the name.");
            throw new Exception("Error: Could not determine the name.");
        }

        if (dbSchema.Rows.Count > 0)
        {

            Hashtable objHashTableOptionPool = new Hashtable();

            foreach (DataRow objDataRow in dbSchema.Rows)
            {
                if (objDataRow["TABLE_NAME"].ToString() != "Participants$")
                {
                    string name = objDataRow["TABLE_NAME"].ToString();

                    string checkname = string.Empty;
                    if (name.Substring((name.Length - 1), 1) == "'")
                    {
                        checkname = name.Substring(0, (name.Length - 1));
                    }
                    else
                    {
                        checkname = name;
                    }
                    string Rname = name.Substring((checkname.Length - 1), 1);
                    if (Rname != "$")
                    {
                        continue;
                    }

                    OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [" + name + "]", cn);
                    DataTable dt = new DataTable(name);
                    da.Fill(dt); //getting error here

                }
            }

        }
    }
}
private void导入(字符串fileFullPath、字符串文件名、StreamWriter)
{
string ConnectionString=“Provider=Microsoft.ACE.OLEDB.12.0;数据源=“+fileFullPath”+
“扩展属性=“+(字符)34+”Excel 12.0;HDR=YES;“+(字符)34;
使用(OLEDB连接cn=新OLEDB连接(连接字符串))
{
cn.Open();
DataTable dbSchema=cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null);
if(dbSchema==null | | dbSchema.Rows.Count<1)
{
writer.WriteLine(“错误:无法确定名称。”);
抛出新异常(“错误:无法确定名称。”);
}
如果(dbSchema.Rows.Count>0)
{
Hashtable objHashTableOptionPool=新Hashtable();
foreach(dbSchema.Rows中的DataRow objDataRow)
{
if(objDataRow[“表名”].ToString()!=“参与者$”)
{
string name=objDataRow[“TABLE_name”]。ToString();
string checkname=string.Empty;
if(name.Substring((name.Length-1),1)=“”)
{
checkname=name.Substring(0,(name.Length-1));
}
其他的
{
checkname=名称;
}
字符串Rname=name.Substring((checkname.Length-1),1);
如果(Rname!=“$”)
{
继续;
}
OleDbDataAdapter da=新的OleDbDataAdapter(“从[“+name+”]”中选择*,cn);
DataTable dt=新的DataTable(名称);
da.Fill(dt);//此处获取错误
}
}
}
}
}

使用数据适配器填充数据表时出错。

请检查ODBC驱动程序权限。ODBC的OLEDB提供程序可能不可用。请下载并安装。是C#还是其他语言?是。。这是C#语言。但我可以在其他地方使用相同的oledb提供程序导入数据。我希望供应商没有问题。谢谢@Athul。。问题来自我尝试上载时的excel文件。这些柱子相互重叠。