Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/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 server 选择*进入->;使用SQL Server 2008的Excel工作表_Sql Server_Excel_Select - Fatal编程技术网

Sql server 选择*进入->;使用SQL Server 2008的Excel工作表

Sql server 选择*进入->;使用SQL Server 2008的Excel工作表,sql-server,excel,select,Sql Server,Excel,Select,我想从SQL Server表中直接选择到一个空的Excel电子表格中 我可以从电子表格中选择另一个SQL Server表(请参见下面的示例) 我可以直接从访问空电子表格中进行选择(参见下面的示例) 但我找不到从SQLServer直接选择到空电子表格的方法 (我通过导入电子表格、多次操作数据来处理大量遗留数据,然后我需要将其导出,供需要csv文件的其他程序使用。现在我必须创建一个中间步骤,将其拉入ACCESS以将其返回Excel。我利用选择*转换为来格式化表格因为我在处理数据时格式化了源表。) 谢

我想从SQL Server表中直接选择到一个空的Excel电子表格中

我可以从电子表格中选择另一个SQL Server表(请参见下面的示例)

我可以直接从访问空电子表格中进行选择(参见下面的示例)

但我找不到从SQLServer直接选择到空电子表格的方法

(我通过导入电子表格、多次操作数据来处理大量遗留数据,然后我需要将其导出,供需要csv文件的其他程序使用。现在我必须创建一个中间步骤,将其拉入ACCESS以将其返回Excel。我利用
选择*转换为
来格式化表格因为我在处理数据时格式化了源表。)

谢谢你的帮助

我可以通过以下代码从Excel中将*选择到SQL Server表中:

string query = "SELECT * INTO " + tableName + " " +
               "FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0'," +
               "'Excel 12.0;Database=" + EXCELfilpath + ";IMEX=1'," +
               "'SELECT * FROM ["+sheetName+"$]')";
我还可以直接从ACCESS表中选择Excel

 //Select the ACCESS Table INTO an Excel Spreadsheet
            try
            {
                //SELECT INTO command                
                string cnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + AccfilePath +
                   ";Persist Security Info=False";

                ConnOpen(cnStr);

                using (connectionToDatabase)
                {
                    //Give the Export Table (destination) a Name
                    //baseTblName = dt.TableName;

                    //Generate the SQL string to SELECT * INTO the NEW table in destination
                    string selectcmd = "SELECT * INTO [Excel 12.0;Database="+ExfilePath+"]." + tblName + " FROM " + tblName;


                    using (OleDbCommand createCmd = new OleDbCommand(selectcmd, connectionToDatabase))
                    {
                        createCmd.ExecuteNonQuery();
                    }

                    ConnClose();
                }
            }

我无法测试它,因为它是64位的,因为OLE通常在您的机器上工作,这应该可以工作

INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
'Excel 12.0;Database=C:\temp\Mappe1.xlsx;', 
'SELECT * FROM [Tabelle1$]') 
SELECT *  FROM ADDR

我收到此错误:提供的值的列名或数量与表定义不匹配。我认为这可以追溯到SELECT*INTO与INSERT INTO。INSERT需要一个现有的表。很抱歉,正如我告诉您的,我无法再进行测试,我的环境A home是完整的64位(Office 32位)。我可以明天在办公室试试。也许这会有所帮助?谢谢,我查看了链接。该文件必须事先存在这些示例的正确列名。我可以等着看你明天在办公室会有什么想法。(我已经试着解决这个问题大约3个月了,所以改天不会有什么影响。)谢谢你的帮助。