乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > 向sql server2005中导入Excel表时总是出错,...-c 导入excel到sql,将excel导入sql

向sql server2005中导入Excel表时总是出错,...-c 导入excel到sql,将excel导入sql

作者:乔山办公网日期:

返回目录:excel表格制作


在企业管理器的导入一步步操作或用
语句如下
--从e69da5e887aae799bee5baa6e79fa5e98193364Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句:
/*===================================================================*/
--如果接受数据导入的表已经存在
insert into 表 select * from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)

--如果导入数据并生成表
select * into 表 from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)

/*===================================================================*/
--如果从SQL数据库中,导出数据到Excel,如果Excel文件已经存在,而且已经按照要接收的数据创建好表头,就可以简单的用:
insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
select * from 表

--如果Excel文件不存在,也可以用BCP来导成类Excel的文件,注意大小写:
--导出表的情况
EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 out "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'

--导出查询的情况
EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'

/*--说明:
c:\test.xls 为导入/导出的Excel文件名.
sheet1$ 为Excel文件的工作表名,一般要加上$才能正常使用.
--*/

有几种原因,第一:数据库表对应列和Excel表格的列没有完全对应
第二:Excel表格含有特殊格式等,导致导入时无法导入格式产生错误。
第三:数据库导入导出功能缺陷(此情况一般不会出现)

排除原因,找一个能够导入的表格,使用格式刷将该表格式复制到需要导入的Excel表格。
查找数据库和Excel看看表是否对应。建议直接导入数据到数据库的新表。默认导入的表名为Excel表格名Sheet1$。然后再将数据复制到新表(此方法好处是导入时不需要考虑 Excel和数据库表列差别)。
如果还不行,可以私信将Excel发给我,帮你导入尝试找到具体原因。
方法1:首先你要考虑如何获取到Excel里的数据,然后把取得的数据循环Insert到SQL数据库
方法2:如果EXCEL与SQL里表的字段一致,并且你可以直接操作数据库,可以考虑打开EXCEL复制所有行粘贴到数据库里

纯粹windows c/++的方式就只能用COM找到excel的automation interface来操作。诸如IDispatch等等一系列神经衰弱型的机械代码。抓狂的很。

你说的SQL是SQL Server吗? 考虑到你使用vc的background,我相信是。是的话,你又有visual c++的使用经验,这个东西用c#做吧。用.net framework操作COM组件非常惬意,而且ado.net也比ado要好用,c#对于c/++背景的人基本上可以照葫芦画瓢, 网上例子非常好找。综合以上,用c#做这个东西吧,反正用不着porting到别的平台上。

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网