用过程方式导出EXCEL提示”消息 102,级别 15,状态 1,第 2 行“

猪扒界 2017-08-23 10:58:32
一、导出的表格式如下


二、导出方式
p_exporttb @sqlstr='select * from "统计"',
@path='F:\',
@fname='情况.xls',
@sheetname='情况1'

三、导出时错误
只能导出表头,没有数据


错误如下
消息 102,级别 15,状态 1,第 2 行
'2017' 附近有语法错误。



过程文件如下
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[p_exporttb]
@sqlstr varchar(8000),--查询语句,如果查询语句中使用了order by ,请加上top 100 percent
@path nvarchar(1000),--文件存放目录
@fname nvarchar(250),--文件名
@sheetname varchar(250)=''--要创建的工作表名,默认为文件名
as
declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int
declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)

--参数检测
if isnull(@fname,'')='' set @fname='temp.xls'
if isnull(@sheetname,'')='' set @sheetname=replace(@fname,'.','#')

--检查文件是否已经存在
if right(@path,1)<>'\' set @path=@path+'\'
create table #tb(a bit,b bit,c bit)
set @sql=@path+@fname
insert into #tb exec master..xp_fileexist @sql

--数据库创建语句
set @sql=@path+@fname
if exists(select 1 from #tb where a=1)
set @constr='DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';READONLY=FALSE'
+';CREATE_DB="'+@sql+'";DBQ='+@sql
else
set @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 8.0;HDR=YES'
+';DATABASE='+@sql+'"'

--连接数据库
exec @err=sp_oacreate 'adodb.connection',@obj out
if @err<>0 goto lberr

exec @err=sp_oamethod @obj,'open',null,@constr
if @err<>0 goto lberr

--创建表的SQL
declare @tbname sysname
set @tbname='##tmp_'+convert(varchar(38),newid())
set @sql='select * into ['+@tbname+'] from('+@sqlstr+') a'
exec(@sql)

select @sql='',@fdlist=''
select @fdlist=@fdlist+','+a.name
,@sql=@sql+',['+a.name+'] '
+case when b.name in('char','nchar','varchar','nvarchar') then
'text('+cast(case when a.length>255 then 255 else a.length end as varchar)+')'
when b.name in('tynyint','int','bigint','tinyint') then 'int'
when b.name in('smalldatetime','datetime') then 'datetime'
when b.name in('money','smallmoney') then 'money'
else b.name end
FROM tempdb..syscolumns a left join tempdb..systypes b on a.xtype=b.xusertype
where b.name not in('image','text','uniqueidentifier','sql_variant','ntext','varbinary','binary','timestamp')
and a.id=(select id from tempdb..sysobjects where name=@tbname)
select @sql='create table ['+@sheetname
+']('+substring(@sql,2,8000)+')'
,@fdlist=substring(@fdlist,2,8000)

exec @err=sp_oamethod @obj,'execute',@out out,@sql
if @err<>0 goto lberr

exec @err=sp_oadestroy @obj

--导入数据
set @sql='openrowset(''Microsoft.Jet.OLEDB.4.0'',''Excel 8.0;HDR=YES
;DATABASE='+@path+@fname+''',['+@sheetname+'$])'

exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from ['+@tbname+']')

set @sql='drop table ['+@tbname+']'
exec(@sql)
return

lberr:
exec sp_oageterrorinfo 0,@src out,@desc out
lbexit:
select cast(@err as varbinary(4)) as 错误号
,@src as 错误源,@desc as 错误描述
select @sql,@constr,@fdlist
...全文
233 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
猪扒界 2017-08-24
  • 打赏
  • 举报
回复
但是字段后面没有空格,难道是日期作为字段不行。
猪扒界 2017-08-24
  • 打赏
  • 举报
回复


看看这个字段名是否有什么问题,谢谢各位大神,
或者是过程无法输出,找不到原因了。
0与1之间 2017-08-24
  • 打赏
  • 举报
回复
遇到过一个类似的问题,是字段后面有个空格
猪扒界 2017-08-24
  • 打赏
  • 举报
回复
还是不行,那个导出不是真正的EXCEL文件。
顺势而为1 2017-08-24
  • 打赏
  • 举报
回复
不用存储过程,下述语句不用变量, 直接用实际文件名,数据库名... 能成功导入吗 ? --导入数据 set @sql='openrowset(''Microsoft.Jet.OLEDB.4.0'',''Excel 8.0;HDR=YES ;DATABASE='+@path+@fname+''',['+@sheetname+'$])' exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from ['+@tbname+']')
猪扒界 2017-08-24
  • 打赏
  • 举报
回复
会不会字段上面是日期造成的呢,导出时无法转类型。
shoppo0505 2017-08-23
  • 打赏
  • 举报
回复
可能列名中有空格,你将每个列名用方括号框起来再试试。
猪扒界 2017-08-23
  • 打赏
  • 举报
回复
不行,一直长不到原因
完整清晰版 PDF ,有目录。共 200MB,分为 9 个分卷 PROJECT 2007 宝典 OFFICE2007 OFFICE2010 PROJECT 2007宝典 原价:88.00元 作者:(美)马默 著,安晓梅,范书义 译 出版社:人民邮电出版社 出版日期:2008-1-1 ISBN:9787115167699 字数:1046000 页码:587 -------------------------------------------------------------------------------- 无论是正在为小团队管理一个项目,还是监督一个数百人的协作分配项目,Microsoft Project 2007的强大功能和本书所提供的完善的详细信息,能够使您保持项目顺利进。从设置预算到分配资源,再到跟踪结果,本书的7个部分按照逻辑顺序详细地介绍了项目管理中的主要元素,您可以从中找到所需的内容。   识别项目的目标和范围;   在企业内和多个位置管理项目;   从甘特图和视图中获得大量信息;   分配任务、检查进度并进调整;   发布临时报表并查看大图;   使用VBA和VBScri pl创建自定义HTML页面;   导入和导出项目信息。 内容提要 -------------------------------------------------------------------------------- Microsoft Project 2007是流的基于网络的项目管理软件,在各类项目管理中发挥着巨大的作用。本书全面介绍了Microsoft Project 2007的强大功能和使用方法。首先从项目管理基础入手,然后建立具体的项目,介绍如何改进项目,如何跟踪进度。利用Project做好这些事情之后,就要和团队成员一起协作,处理更复杂的项目,所以本书接着介绍团队协作方面的内容。本书最后的部分介绍如何自定义Project以及宏和VBA的相关信息,并通过一些案例来帮助您了解Project的使用情况。   本书内容丰富,融合了作者大量的实践经验,适用于各类项目管理人员使用。 目录 -------------------------------------------------------------------------------- 第1部分 项目管理基础  第1章 项目的本质    1.1 理解项目     1.1.1 熟悉项目管理     1.1.2 使用项目管理软件管理项目    1.2 项目的生命周期     1.2.1 确定目标和项目的范围     1.2.2 规划     1.2.3 修订     1.2.4 跟踪     1.2.5 从错误中吸取教训    1.3 小结   第2章 熟悉Microsoft Project环境    2.1 初识Project     2.1.1 启动项目     2.1.2 输入信息     2.1.3 更改视图    2.2 Project 2007中的新增功能    2.3 小结  第2部分 推进项目  第3章 创建新项目    3.1 收集信息     3.1.1 确定详细任务     3.1.2 设置时间限制     3.1.3 准备好资源     3.1.4 检查相关性    3.2 打开项目文件     3.2.1 打开项目文件的常规方法     3.2.2 打开或启动项目的其他方法    3.3 建立项目的基本信息    3.4 查看项目日历     3.4.1 设置日历选项     3.4.2 设置日程选项     3.4.3 创建新日历     3.4.4 调整日历    3.5 输入任务    3.6 添加子任务    3.7 保存项目文件     3.7.1 保存文件     3.7.2 将文件保存为模板     3.7.3 保护文件     3.7.4 关闭Project    3.8 在工作中使用项目大纲     3.8.1 在大纲中调整任务     3.8.2 复制任务     3.8.3 显示和隐藏任务    3.9 获取帮助     3.9.1 使用帮助系统     3.9.2 查找联机帮助    3.10 小结   第4章 建立任务    4.1 为任务建立时间安排     4.1.1 固定单位任务     4.1.2 固定工期任务     4.1.3 固定工时任务     4.1.4 投入比导向任务    4.2 为任务分配时间     4.2.1 使用甘特表     4.2.2 使用任务信息对话框     4.2.3 使用鼠标和任务条形图     4.2.4 设置日程选项     4.2.5 为任务分配日历     4
完整清晰版 PDF ,有目录。共 200MB,分为 10 个分卷 PROJECT 2007 宝典 OFFICE2007 OFFICE2010 PROJECT 2007宝典 原价:88.00元 作者:(美)马默 著,安晓梅,范书义 译 出版社:人民邮电出版社 出版日期:2008-1-1 ISBN:9787115167699 字数:1046000 页码:587 -------------------------------------------------------------------------------- 无论是正在为小团队管理一个项目,还是监督一个数百人的协作分配项目,Microsoft Project 2007的强大功能和本书所提供的完善的详细信息,能够使您保持项目顺利进。从设置预算到分配资源,再到跟踪结果,本书的7个部分按照逻辑顺序详细地介绍了项目管理中的主要元素,您可以从中找到所需的内容。   识别项目的目标和范围;   在企业内和多个位置管理项目;   从甘特图和视图中获得大量信息;   分配任务、检查进度并进调整;   发布临时报表并查看大图;   使用VBA和VBScri pl创建自定义HTML页面;   导入和导出项目信息。 内容提要 -------------------------------------------------------------------------------- Microsoft Project 2007是流的基于网络的项目管理软件,在各类项目管理中发挥着巨大的作用。本书全面介绍了Microsoft Project 2007的强大功能和使用方法。首先从项目管理基础入手,然后建立具体的项目,介绍如何改进项目,如何跟踪进度。利用Project做好这些事情之后,就要和团队成员一起协作,处理更复杂的项目,所以本书接着介绍团队协作方面的内容。本书最后的部分介绍如何自定义Project以及宏和VBA的相关信息,并通过一些案例来帮助您了解Project的使用情况。   本书内容丰富,融合了作者大量的实践经验,适用于各类项目管理人员使用。 目录 -------------------------------------------------------------------------------- 第1部分 项目管理基础  第1章 项目的本质    1.1 理解项目     1.1.1 熟悉项目管理     1.1.2 使用项目管理软件管理项目    1.2 项目的生命周期     1.2.1 确定目标和项目的范围     1.2.2 规划     1.2.3 修订     1.2.4 跟踪     1.2.5 从错误中吸取教训    1.3 小结   第2章 熟悉Microsoft Project环境    2.1 初识Project     2.1.1 启动项目     2.1.2 输入信息     2.1.3 更改视图    2.2 Project 2007中的新增功能    2.3 小结  第2部分 推进项目  第3章 创建新项目    3.1 收集信息     3.1.1 确定详细任务     3.1.2 设置时间限制     3.1.3 准备好资源     3.1.4 检查相关性    3.2 打开项目文件     3.2.1 打开项目文件的常规方法     3.2.2 打开或启动项目的其他方法    3.3 建立项目的基本信息    3.4 查看项目日历     3.4.1 设置日历选项     3.4.2 设置日程选项     3.4.3 创建新日历     3.4.4 调整日历    3.5 输入任务    3.6 添加子任务    3.7 保存项目文件     3.7.1 保存文件     3.7.2 将文件保存为模板     3.7.3 保护文件     3.7.4 关闭Project    3.8 在工作中使用项目大纲     3.8.1 在大纲中调整任务     3.8.2 复制任务     3.8.3 显示和隐藏任务    3.9 获取帮助     3.9.1 使用帮助系统     3.9.2 查找联机帮助    3.10 小结   第4章 建立任务    4.1 为任务建立时间安排     4.1.1 固定单位任务     4.1.2 固定工期任务     4.1.3 固定工时任务     4.1.4 投入比导向任务    4.2 为任务分配时间     4.2.1 使用甘特表     4.2.2 使用任务信息对话框     4.2.3 使用鼠标和任务条形图     4.2.4 设置日程选项     4.2.5 为任务分配日历     
本考试系统由前台考生考试部分和后台系统管理部分组成。 一、前台部分 1、 选择课程: (1)、考试部分 考试权限模式有两种:   1、课程管理员后台设定:由课程管理员在考生考试之前预先设定好每个的试卷 。   2、考生自己选择:考生在第一次登陆考试平台的时候,自己选择要参加的课程和试卷。 考试权限模式由最高管理员在后台设置。 考生要参加考试,必须满足几个前提: a.考生所在的有权限参加该试卷的考试。 b.该试卷呈“打开”状态。 c.该试卷所在课程呈“打开”状态。 d.该试卷所涉及的章节呈“打开”状态。 e.正好在试卷规定的时间内参加考试。 考生在考试过程中,应注意保存答案。试卷内每一种题型的后面都有一个保存按钮,只要考生做完此类型试题,应点击保存按钮。 试卷用倒计时方式扣减时间,如果考生在考试过程中不小心关闭窗口,可以重新进入考试系统,继续刚才的考试,以前保存的答案仍旧存在。 操作题一般来说用于信息化的考试,比如制作Word文档、Excel表格、网页制作等,考生在做完这些文件后上传到服务器上,等待管理员批改。具体上传参数,由最高管理员在后台设定。 在考试结束前一分钟和最后10秒种,系统会提示 考生保存答案,并提交试卷。    考试的次数由管理员或课程管理员设定。考生可以反复参加考试 (2)、竞赛部分 竞赛试卷可以由管理员出题,也可以由考生自由出题。考生在“练习部分”出“模拟试卷”的时候,可以把试卷类型设置为“竞赛”,让其他考生参加这份“模拟试卷”,进竞赛。 (2)、练习部分 练习分两种:“分项练习”和“模拟试卷” “分项练习”:主要是针对各个章节,不同的题型进练习。考生要参加练习,管理员或课程管理员必须首先在后台的“课程管理”——“练习管理”中设置好要练习章节的时间、状态。 练习时,以章为单位,按题型类别反复练习。只有在点击“本章已经练习完”之后,考生才可以在“查询成绩”中看到此章练习的标准答案和自己的答案。如果想再练习一次,请点击“重新练习”。       “模拟试卷”:考生可以按自己的想法出试卷,先设置试卷的属性,再设置各种题型的题量与分值,最后生成试卷。考生练习完即可查看成绩。 2、 成绩查询: (1)、考试部分 考生进入已经考过的试卷,可以了解每一种题型的得分情况。而且还可以深入了解到自己的答案与标准答案之间的差距。 因为试卷中的主观题需要课程管理员批改,可能需要一段时间才能查询到成绩。但如果试卷是由客观题型组成的,管理员或课程管理员就可以在后台的“试卷管理”——“查询方式”中,选择“考完查询”。这样,考生就可以在考试结束后立即看到自己的成绩了。 考生可以浏览整张试卷,并打印已经考过的试卷。 (3)、竞赛部分 和考试部分一样。 (2)、练习部分 “分项练习”只有在点击“本章已经练习完”之后,考生才可以在“查询成绩”中看到此章练习的标准答案和自己的答案。 3、 考试新闻  考生可以了解考试的相关信息,还可以看到公布的成绩。 二、后台管理部分 (一)、课程管理 1、课程管理: 课程分“专业课”、“公共课”和“基础课”。出试卷时,范围可以跨“公共课”。当本课程中如果有试卷呈“打开”状态时,请将此课程“打开”。 2、练习管理(章节管理): 用于设定练习的时间和状态,使用时必须为“打开”状态。如果想把题目录入到相应的章节,请在此添加章节序号。添加章节时必须输入数字,以防出错。“现有题量”显示了本章节所储存的“考试题”和“练习题”的总量。 3、试卷管理: 试卷类型分两类,随机试卷和人工出卷。随机试卷必须在“题型管理”中添加“题量”和“分值”。而人工出题的试卷在添加过程中需要从题库中选择试题,使试题呈“选中”状态,且在“题型管理”中只需填写“分值”即可,系统会自动计算“题量”。 使用试卷时,务必把试卷“打开”。  “题型管理”中的“分值”,除阅读理解外,都是指每道题目的分值。因为阅读理解是以大题为单位选题或是抽题,而每个大题都有不确定个小题,所以大题的总分值无法统计,只能输入小题的“分值”。注意:一旦修改试卷的“题量”和“分值”,将会清空已经考过此试卷的考生数据。 课程管理员最好在考试之前设定好试卷的“题量”和“分值”。 答案的保存方式有两种:整体保存和分部保存。整体保存是考试过程中一次性保存所有题型的试题答案。分部保存是仅

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧