Sql server 选择*进入->;使用SQL Server 2008的Excel工作表
我想从SQL Server表中直接选择到一个空的Excel电子表格中 我可以从电子表格中选择另一个SQL Server表(请参见下面的示例) 我可以直接从访问空电子表格中进行选择(参见下面的示例) 但我找不到从SQLServer直接选择到空电子表格的方法 (我通过导入电子表格、多次操作数据来处理大量遗留数据,然后我需要将其导出,供需要csv文件的其他程序使用。现在我必须创建一个中间步骤,将其拉入ACCESS以将其返回Excel。我利用Sql server 选择*进入->;使用SQL Server 2008的Excel工作表,sql-server,excel,select,Sql Server,Excel,Select,我想从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个月了,所以改天不会有什么影响。)谢谢你的帮助。