asp导出excel出错,或单元格里面的内容不能自动换行。

99percent 2018-09-28 11:36:21
<!--#include file="conn.asp"-->
<%

dim s,sql,filename,fs,myfile,x
Set fs = server.CreateObject("scripting.filesystemobject")
'--假设你想让生成的EXCEL文件做如下的存放
filename = Server.MapPath("2018918.xls")
'--如果原来的EXCEL文件存在的话删除它
if fs.FileExists(filename) then
fs.DeleteFile(filename)
end if

'--创建EXCEL文件
set myfile = fs.CreateTextFile(filename,true)
Set rs = Server.CreateObject("ADODB.Recordset") '--从数据库中把你想放到EXCEL中的数据查出来
sql = "select * from [hyclub] order by hyid desc"

'sql = "select teacher_Name,teacher_use_time,teacher_use_class,teacher_use_snumber,teacher_use_jc,teacher_use_ctitle,teacher_use_couse from teacher_use_table order by teacher_use_ID desc"
rs.Open sql,conn
StartTime = Request("StartTime")
EndTime = Request("EndTime")
StartEndTime = "AddTime between #"& StartTime &" 00:00:00# and #"& EndTime &" 23:59:59#"

strsql = "select hyid,xmcs,xmmc,xmjj,hzfs,xmtzze,xmdw,lxms_lxw,lxms_dh,fl from [hyclub] order by hyid desc"
'strSql = "select teacher_Name,teacher_use_time,teacher_use_class,teacher_use_snumber,teacher_use_jc,teacher_use_ctitle,teacher_use_couse from teacher_use_table"
Set rstData =conn.execute(strSql)
if not rstData.EOF and not rstData.BOF then
dim trLine,responsestr
strLine=""
strLine = strLine & "序号" & chr(9)
strLine = strLine & "项目权属" & chr(9)
strLine = strLine & "项目名称" & chr(9)
strLine = strLine & "项目简介" & chr(9)
strLine = strLine & "合作方式" & chr(9)
strLine = strLine & "项目投资总额" & chr(9)
strLine = strLine & "项目单位" & chr(9)
strLine = strLine & "联系人" & chr(9)
strLine = strLine & "联系方式" & chr(9)
strLine = strLine & "分类" & chr(9)

'--将表的列名先写入EXCEL
myfile.writeline strLine
Do while Not rstData.EOF
strLine=""
'============如何定义列宽和文字不爆格=========================
for each x in rstData.Fields
strLine = strLine & x.value & chr(9)
next
'=====================================

myfile.writeline strLine '另外,如果导出数据超过10条以上(不知道是不是字段文字的关系,就显示这儿出错,如何改进?)
rstData.MoveNext
loop
end if
Response.Write "<br>    生成EXCEL文件成功,点击<a href=""2018918.xls"" target=""_blank"">下载</a>~"
rstData.Close
set rstData = nothing
Conn.Close
Set Conn = nothing
%>
...全文
761 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lz471183090 2018-11-21
  • 打赏
  • 举报
回复
少换行符。百度一下吧,chr(9)只是每个单元格的分割符,每行完了以后要增加一个换行符chr()多少忘了
hookee 2018-10-06
  • 打赏
  • 举报
回复
csv不是excel格式,没法操作单元格。 要么用客户端的解决方案, 通过js操作WebOffice控件(有免费的)来实现。
99percent 2018-10-06
  • 打赏
  • 举报
回复
引用 6 楼 hookee 的回复:
你的2018918.xls是建在web目录下的,首先要确保目录有写的权限。


<!--#include file="conn.asp"-->
<%
Dim rs, strLine, sql, filename, fs, myfile

strLine = ""
strLine = strLine & "序号" & chr(9)
strLine = strLine & "项目权属" & chr(9)
strLine = strLine & "项目名称" & chr(9)
strLine = strLine & "项目简介" & chr(9)
strLine = strLine & "合作方式" & chr(9)
strLine = strLine & "项目投资总额" & chr(9)
strLine = strLine & "项目单位" & chr(9)
strLine = strLine & "联系人" & chr(9)
strLine = strLine & "联系方式" & chr(9)
strLine = strLine & "分类" & chr(9)
strLine = strLine & VbCrLf


sql = "SELECT hyid,xmcs,xmmc,xmjj,hzfs,xmtzze,xmdw,lxms_lxw,lxms_dh,fl FROM [hyclub] ORDER BY hyid DESC"
Set rs = CreateObject("ADODB.Recordset")
rs.CursorLocation = 3
rs.Open conn, sql, 1, 1
If Not (rs.EOF And rs.BOF) Then
strLine = strLine & rs.GetString(2, -1, VbTab, VbCrLf, "")
End If
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing

filename = Server.MapPath("2018918.xls")
Set fs = CreateObject("Scripting.FileSystemObject")
Set myfile = fs.OpenTextFile(filename, 2, True, -1)
myfile.Write strLine
myfile.Close
Set myfile = Nothing
Set fs = Nothing

Response.Write "<br>    生成EXCEL文件成功,点击<a href=""2018918.xls"" target=""_blank"">下载</a>~"
%>



==================================================
你好,单元格里面的内容不能自动换行,请问如何解决?
hookee 2018-10-05
  • 打赏
  • 举报
回复
你的2018918.xls是建在web目录下的,首先要确保目录有写的权限。

<!--#include file="conn.asp"-->
<%
Dim rs, strLine, sql, filename, fs, myfile

strLine = ""
strLine = strLine & "序号" & chr(9) 
strLine = strLine & "项目权属" & chr(9) 
strLine = strLine & "项目名称" & chr(9) 
strLine = strLine & "项目简介" & chr(9) 
strLine = strLine & "合作方式" & chr(9) 
strLine = strLine & "项目投资总额" & chr(9) 
strLine = strLine & "项目单位" & chr(9) 
strLine = strLine & "联系人" & chr(9) 
strLine = strLine & "联系方式" & chr(9) 
strLine = strLine & "分类" & chr(9) 
strLine = strLine & VbCrLf


sql = "SELECT hyid,xmcs,xmmc,xmjj,hzfs,xmtzze,xmdw,lxms_lxw,lxms_dh,fl FROM [hyclub] ORDER BY hyid DESC"
Set rs = CreateObject("ADODB.Recordset")
rs.CursorLocation = 3
rs.Open conn, sql, 1, 1
If Not (rs.EOF And rs.BOF) Then
	strLine = strLine & rs.GetString(2, -1, VbTab, VbCrLf, "")
End If
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing

filename = Server.MapPath("2018918.xls")
Set fs = CreateObject("Scripting.FileSystemObject") 
Set myfile = fs.OpenTextFile(filename, 2, True, -1)
myfile.Write strLine
myfile.Close
Set myfile = Nothing
Set fs = Nothing

Response.Write "<br>    生成EXCEL文件成功,点击<a href=""2018918.xls"" target=""_blank"">下载</a>~" 
%> 

99percent 2018-10-03
  • 打赏
  • 举报
回复
99percent 2018-10-03
  • 打赏
  • 举报
回复
未解决,求解决,未解决,求解决,未解决,求解决,未解决,求解决,未解决,求解决,未解决,求解决,未解决,求解决,未解决,求解决,
99percent 2018-10-02
  • 打赏
  • 举报
回复
引用 2 楼 hookee 的回复:
用 rstData.GetString方法可以一次生成所有数据,不用循环,效率高很多。
生成的是csv格式的数据,不是真正意义上的excel格式。
具体报什么错?

====================================================
Microsoft VBScript 运行时错误 错误 '800a0005'
无效的过程调用或参数
/webdownload/jmxmk/inout_xls/admin/outxls.asp,行 50
====================================================
50行:myfile.writeline strLine '另外,如果导出数据超过10条以上(不知道是不是字段文字的关系,就显示这儿出错,如何改进?)

如果导出10条记录就不出错。但单元格里无法自动换行。

'============如何定义单元格(x.value)赋值时能自动换行=========================
for each x in rstData.Fields
strLine = strLine & x.value & chr(9)
next
'=====================================
hookee 2018-09-30
  • 打赏
  • 举报
回复
用 rstData.GetString方法可以一次生成所有数据,不用循环,效率高很多。 生成的是csv格式的数据,不是真正意义上的excel格式。 具体报什么错?
99percent 2018-09-29
  • 打赏
  • 举报
回复
求解决方法。。。

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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