Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.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和excel自动化,如何使用CopyFromRecordset函数_C#_.net_Excel Automation - Fatal编程技术网

C# C和excel自动化,如何使用CopyFromRecordset函数

C# C和excel自动化,如何使用CopyFromRecordset函数,c#,.net,excel-automation,C#,.net,Excel Automation,我试图用SQL server中的一些数据填充excel文件 我的代码如下: public static void SQLToExcel(Excel.Workbook xlWorkBook, string SQL, string tFORMAT) { string connectionString = ConfigurationManager.ConnectionStrings["ANSICConnection"].ConnectionString;

我试图用SQL server中的一些数据填充excel文件

我的代码如下:

   public static void SQLToExcel(Excel.Workbook xlWorkBook, string SQL, string tFORMAT)
    {
        string connectionString = ConfigurationManager.ConnectionStrings["ANSICConnection"].ConnectionString;
        SqlConnection conn;
        conn = new SqlConnection(connectionString);
        conn.Open();


        using (SqlCommand cmd = new SqlCommand(SQL, conn))
        {
            SqlDataReader reader = cmd.ExecuteReader();

            if (reader.HasRows)
            {
                reader.Read();

                ((Range)xlWorkBook.Sheets["COVER"].Range("D6")).CopyFromRecordset(reader);


            }
            reader.Close();
        }


        conn.Close();


    }
我得到以下错误

{没有此类接口支持来自HRESULT:0x80004002 E_NOINTERFACE的异常}


是否需要将读取器转换为数组?

要能够使用CopyFromRecordset,您需要将SqlDataReader替换为ADODB.Recordset。别忘了添加对Microsoft ActiveX Data Objects 2.x库的引用。

首先,copyfromrecordset不再是主动维护的,因此您可能希望将OpenXML作为替代方案。其次,copyfromrecordset仅适用于ADO连接。因此,您需要添加ADODB库并使用它进行连接。您还将发现,guid等可能存在问题,无法正常工作,以及SQL编写方式的其他细微变化。