【问题标题】:SELECT * INTO -> Excel worksheet using SQL Server 2008SELECT * INTO -> 使用 SQL Server 2008 的 Excel 工作表
【发布时间】:2015-09-15 18:08:16
【问题描述】:

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

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

我可以直接从 ACCESS 选择一个空的电子表格(参见下面的示例)。

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

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

感谢您的帮助。

我可以通过以下代码从 Excel 中 SELECT * INTO 一个 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();
                }
            }

【问题讨论】:

    标签: sql-server excel select


    【解决方案1】:

    由于 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 需要一个现有的表。
    • 对不起,我告诉过你,我不能再测试了,我的家庭环境是完整的 64 位(Office 32 位)。我明天可以在办公室试试。也许同时这会有所帮助? blog.waynesheffield.com/wayne/code-library/ad-hoc-querying/…
    • 谢谢,我看了一下链接。该文件必须预先存在这些示例的正确列名。我可以等着看你明天在办公室想出什么。 (我已经尝试解决这个问题大约 3 个月,所以另一天不会受到伤害。)感谢您的帮助。
    猜你喜欢
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 2018-05-22
    • 2010-11-21
    • 2023-03-13
    • 2013-05-15
    相关资源
    最近更新 更多