0

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

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

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

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

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

谢谢您的帮助。

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

1 回答 1

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
于 2012-11-01T23:11:42.307 回答