SQL导入和导出EXECL的例子

来源:互联网 发布:幸福网络 编辑:程序博客网 时间:2024/05/15 13:12

要不是小白同学让我帮他,合并这两个execl表格,我还一直没试过用sql去直接导入和导出execl.废话不多说,我们先看小白同学给的两张execl文件.一张为成绩表,里面有班级和名字以及各科成绩和名次,惟独缺少学号.为了方便我改成chengji.xls的名字,如下图:(截取部分图)

 SQL导入和导出EXECL的例子 - wlm_56 - wlm_56的博客

一张为学号和班级以及姓名的表,同样我改为dakao.xls的名字,如下图:(截取部分图)

 

 SQL导入和导出EXECL的例子 - wlm_56 - wlm_56的博客

我们要做的是,把以上两张表合并起来,让dakao.xls表里的学号和chengji.xls表里的人名和他们对应的成绩都对应起来,再重新生成一张execl表.

首先打开sql企业管理器,我们在里面新建一个数据库,名为newtable.然后,进入查询分析器下,我们选中刚新建的数据库newtable,输入如下语句:

SELECT * into newtable
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:/chengji.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]

这句的意思是,读取chengji.xls文件的Sheet1$,并新建一个表名为newtable,将刚读取的信息,写进改表.

我们可以查询下看看,是不是都写进来了.

运行下 select * from newtable

如下图:

SQL导入和导出EXECL的例子 - wlm_56 - wlm_56的博客

(我们将chengji.xls和dakao.xls都放入C盘,(这个放在什么位置,随便大家,只是'Data Source="c:/chengji.xls";这个要根据你放的路径一样.))

同样,我们再把dakao.xls的文件写进另一张表dakao里,sql语句如下:

SELECT * dakao
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:/dakao.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]

再查询下,看结果如何:

select* from dakao

如下图:

SQL导入和导出EXECL的例子 - wlm_56 - wlm_56的博客

我们现在要做的是,将两张表里的人名和学号对应起来,现在在同一个数据库里的两张表,应该好办多了,查看数据之间的关系,我们可以写出如下语句:

select newtable.化学,newtable.历史,newtable.名次,newtable.名次1,newtable.名次2,newtable.名次3,newtable.名次4,newtable.名次5,newtable.名次6,newtable.名次7,newtable.数学,newtable.物理,newtable.姓名,newtable.英语,newtable.语文,newtable.政治,newtable.总分,dakao.班级,dakao.学号 from newtable,dakao where newtable.姓名=dakao.姓名 and newtable.班级=dakao.班级 order by 总分 desc

查找两张表,如果两张表中的班级和姓名都一样,那么合并这两条数据,让学号和姓名以及成绩对应起来,并按总分,从高到低排序.(当然这里如果同一班级有同名的人,那就没办法解决了,如果出现这种情况,人也没办法分别谁是谁,更别说程序了)

查询结果如下图:

SQL导入和导出EXECL的例子 - wlm_56 - wlm_56的博客

我们在查询结果上,点右键,然后点全选,再另存为new.xls(保存类型选所有文件(**)下面的 列分隔符选 制表符分隔 )

就可以得到我们要的新的execl文件了,如下图:

SQL导入和导出EXECL的例子 - wlm_56 - wlm_56的博客

这里,的表头是没有自动生成的,我们手工添上去好了.还有学号这一列,是采用了科学记数法,这不是我们要的,我们可以选中这一列,右键,选择设置单元格格式,选特殊--->邮政编码 就可以了.得出以下的文件:如图:

SQL导入和导出EXECL的例子 - wlm_56 - wlm_56的博客

 这就是我们需要的结果.new.xls文件的截图.

 

注:

use master
go
sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'Ad Hoc Distributed Queries', 1
go
reconfigure
go
use newtable
insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:/text.xls',sheet1$)
select newtable.化学,newtable.历史,newtable.名次,newtable.名次1,newtable.名次2,newtable.名次3,newtable.名次4,newtable.名次5,newtable.名次6,newtable.名次7,newtable.数学,newtable.物理,newtable.姓名,newtable.英语,newtable.语文,newtable.政治,newtable.总分,dakao.班级,dakao.学号 from newtable,dakao where newtable.姓名=dakao.姓名 and newtable.班级=dakao.班级

这个用语句将sql查询的记录集,在C盘生成text.xls的文件,这个经我实验,得出来的数据会乱掉,不灵个.不如直接手动另存为xls格式.

原创粉丝点击