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

时间:2013-01-27 21:47:18

标签: 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 
('name','name','name','name','name','0.00','0.00',''),
('name','name','name','name','name','0.00','0.00','');

但是我收到了这个错误:

  

Msg 257,Level 16,State 3,Line 2
  不允许从数据类型varchar到varbinary的隐式转换   使用CONVERT函数运行此查询。

请告诉我为什么我有错误以及如何正确编写此代码?

1 个答案:

答案 0 :(得分:0)

你的语法对我来说是正确的,所以我有一些观察。

该错误通常意味着您遇到了数据类型转换问题 - 在此情况下,您的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显式提供值 - 看起来它应该可以工作。

祝你好运。