Sql 导出到Excel-不允许隐式转换

Sql 导出到Excel-不允许隐式转换,sql,sql-server,excel,insert,oledb,Sql,Sql Server,Excel,Insert,Oledb,我想创建到Excel文件的导出 为此,我使用以下代码: INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 8.0;Database=C:\Temp\65343\file.xls;', 'SELECT group,subgroup,name_product,manufacture,unit, retail_price,wholesale_price,info FROM [ExportSheet$]') VALUES ('nam

我想创建到Excel文件的导出

为此,我使用以下代码:

INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
'Excel 8.0;Database=C:\Temp\65343\file.xls;',
'SELECT group,subgroup,name_product,manufacture,unit,
retail_price,wholesale_price,info FROM [ExportSheet$]') 
VALUES 
('name','name','name','name','name','0.00','0.00',''),
('name','name','name','name','name','0.00','0.00','');
但我得到了这个错误:

Msg 257,第16级,第3状态,第2行
不允许从数据类型varchar隐式转换为varbinary。
使用CONVERT函数运行此查询


请告诉我为什么会有错误,以及编写这段代码的正确性如何?

您的语法在我看来是正确的,因此我有一些观察

该错误通常意味着您遇到了数据类型转换问题——在这种情况下,您的excel文件中的一个字段似乎需要一个varbinary字段,但却收到了一个varchar字段

如果您将字段限制为一个字段,比如组,是否有效?如果是这样,您可以找出哪个字段是罪魁祸首

或者,可以使用临时表代替VALUES子句:

INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
'Excel 8.0;Database=C:\Temp\65343\file.xls;',
'SELECT group,subgroup,name_product,manufacture,unit,
retail_price,wholesale_price,info FROM [ExportSheet$]') 
SELECT group,subgroup,name_product,manufacture,unit,
retail_price,wholesale_price,info FROM YourTempTable;
不确定这是否会有帮助,但我从未使用INSERT INTO OPENROWSET显式地提供值——尽管如此,它似乎应该可以工作


祝你好运。

你能展示一下file
file.xls的外观吗?它正在尝试将字符串写入二进制值。@flup和如何正确地编写此代码?select语句中有9个字段,但insert中只有8个值,为什么?@sgedes我有8个字段。。。