仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 579|回复: 7
打印 上一主题 下一主题

[学习教程] ASP网页设计出色:ASP导出Excel数据的四种办法

[复制链接]
精灵巫婆 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:14:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。excel|导出excel|数据  1、利用OWC

  甚么是OWC?

  OWC是OfficeWebCompent的缩写,即Microsoft的OfficeWeb组件,它为在Web中绘制图形供应了天真的同时也是最基础的机制。在一个intranet情况中,假如能够假定客户机上存在特定的扫瞄器和一些功效壮大的软件(如IE5和Office2000),那末就有才能使用OfficeWeb组件供应一个交互式图形开辟情况。这类形式下,客户端事情站将在全部义务平分担很年夜的比重。

<%OptionExplicit
ClassExcelGen
PrivateobjSpreadsheet
PrivateiColOffset

PrivateiRowOffset
SubClass_Initialize()
SetobjSpreadsheet=Server.CreateObject("OWC.Spreadsheet")
iRowOffset=2
iColOffset=2
EndSub

SubClass_Terminate()
SetobjSpreadsheet=NothingCleanup
EndSub

PublicPropertyLetColumnOffset(iColOff)
IfiColOff>0then
iColOffset=iColOff
Else
iColOffset=2
EndIf
EndProperty

PublicPropertyLetRowOffset(iRowOff)
IfiRowOff>0then
iRowOffset=iRowOff
Else
iRowOffset=2
EndIf
EndPropertySubGenerateWorksheet(objRS)
PopulatestheExcelworksheetbasedonaRecordsetscontents
Startbydisplayingthetitles
IfobjRS.EOFthenExitSub
DimobjField,iCol,iRow
iCol=iColOffset
iRow=iRowOffset
ForEachobjFieldinobjRS.Fields
objSpreadsheet.Cells(iRow,iCol).Value=objField.Name
objSpreadsheet.Columns(iCol).AutoFitColumns
设置Excel内外的字体
objSpreadsheet.Cells(iRow,iCol).Font.Bold=True
objSpreadsheet.Cells(iRow,iCol).Font.Italic=False
objSpreadsheet.Cells(iRow,iCol).Font.Size=10
objSpreadsheet.Cells(iRow,iCol).Halignment=2居中
iCol=iCol+1
NextobjField
Displayallofthedata
DoWhileNotobjRS.EOF
iRow=iRow+1
iCol=iColOffset
ForEachobjFieldinobjRS.Fields
IfIsNull(objField.Value)then
objSpreadsheet.Cells(iRow,iCol).Value=""
Else
objSpreadsheet.Cells(iRow,iCol).Value=objField.Value
objSpreadsheet.Columns(iCol).AutoFitColumns
objSpreadsheet.Cells(iRow,iCol).Font.Bold=False
objSpreadsheet.Cells(iRow,iCol).Font.Italic=False
objSpreadsheet.Cells(iRow,iCol).Font.Size=10
EndIf
iCol=iCol+1
NextobjField
objRS.MoveNext
Loop
EndSubFunctionSaveWorksheet(strFileName)

Savetheworksheettoaspecifiedfilename
OnErrorResumeNext
CallobjSpreadsheet.ActiveSheet.Export(strFileName,0)
SaveWorksheet=(Err.Number=0)
EndFunction
EndClass

DimobjRS
SetobjRS=Server.CreateObject("ADODB.Recordset")
objRS.Open"SELECT*FROMxxxx","Provider=SQLOLEDB.1;PersistSecurity

Info=True;UserID=xxxx;Password=xxxx;InitialCatalog=xxxx;Datasource=xxxx;"
DimSaveName
SaveName=Request.Cookies("savename")("name")
DimobjExcel
DimExcelPath
ExcelPath="Excel"&SaveName&".xls"
SetobjExcel=NewExcelGen
objExcel.RowOffset=1
objExcel.ColumnOffset=1
objExcel.GenerateWorksheet(objRS)
IfobjExcel.SaveWorksheet(Server.MapPath(ExcelPath))then
Response.Write"<html><bodybgcolor=gainsborotext=#000000>已保留为Excel文件.

<ahref="&server.URLEncode(ExcelPath)&">下载</a>"
Else
Response.Write"在保留过程当中有毛病!"
EndIf
SetobjExcel=Nothing
objRS.Close
SetobjRS=Nothing
%>  2、用Excel的Application组件在客户端导出到Excel或Word

  注重:两个函数中的“data“是网页中要导出的table的id

<inputtype="hidden"name="out_word"value="导出到word"class="notPrint">
<inputtype="hidden"name="out_excel"value="导出到excel"class="notPrint">
  导出到Excel代码

<SCRIPTLANGUAGE="javascript">
<!--
functionAutomateExcel()
{
//StartExcelandgetApplicationobject.
varoXL=newActiveXObject("Excel.Application");
//Getanewworkbook.
varoWB=oXL.Workbooks.Add();
varoSheet=oWB.ActiveSheet;
vartable=document.all.data;
varhang=table.rows.length;

varlie=table.rows(0).cells.length;

//Addtableheadersgoingcellbycell.
for(i=0;i<hang;i++)
{
for(j=0;j<lie;j++)
{
oSheet.Cells(i+1,j+1).value=table.rows(i).cells(j).innerText;
}

}
oXL.Visible=true;
oXL.UserControl=true;
}
//-->
</SCRIPT>
  导出到Word代码

<scriptlanguage="vbscript">
SubbuildDoc
settable=document.all.data
row=table.rows.length
column=table.rows(1).cells.length

SetobjWordDoc=CreateObject("Word.Document")

objWordDoc.Application.Documents.AddtheTemplate,False
objWordDoc.Application.Visible=True

DimtheArray(20,10000)
fori=0torow-1
forj=0tocolumn-1
theArray(j+1,i+1)=table.rows(i).cells(j).innerTEXT
next
next
objWordDoc.Application.ActiveDocument.Paragraphs.Add.Range.InsertBefore("综合查询了局集")//显现表格题目

objWordDoc.Application.ActiveDocument.Paragraphs.Add.Range.InsertBefore("")
SetrngPara=objWordDoc.Application.ActiveDocument.Paragraphs(1).Range
WithrngPara
.Bold=True//将题目设为粗体
.ParagraphFormat.Alignment=1//将题目居中
.Font.Name="隶书"//设定题目字体
.Font.Size=18//设定题目字体巨细
EndWith
SetrngCurrent=objWordDoc.Application.ActiveDocument.Paragraphs(3).Range
SettabCurrent=ObjWordDoc.Application.ActiveDocument.Tables.Add(rngCurrent,row,column)

fori=1tocolumn

objWordDoc.Application.ActiveDocument.Tables(1).Rows(1).Cells(i).Range.InsertAftertheArray(i,1)
objWordDoc.Application.ActiveDocument.Tables(1).Rows(1).Cells(i).Range.ParagraphFormat.alignment=1
next
Fori=1tocolumn
Forj=2torow
objWordDoc.Application.ActiveDocument.Tables(1).Rows(j).Cells(i).Range.InsertAftertheArray(i,j)
objWordDoc.Application.ActiveDocument.Tables(1).Rows(j).Cells(i).Range.ParagraphFormat.alignment=1
Next
Next

EndSub
</SCRIPT>
  3、间接在IE中翻开,再存为EXCEL文件

  把读出的数据用<table>格局,在网页中显现出来,同时,加高低一句便可把EXCEL表在客客户端显现。

<%response.ContentType="application/vnd.ms-excel"%>
  注重:显现的页面中,只把<table>输入,最好不要输入其他表格之外的信息。

  4、导出以半角逗号离隔的csv

  用fso办法天生文本文件的办法,天生一个扩大名为csv文件。此文件,一行即为数据表的一行。天生数据表字段用半角逗号离隔。(有关fso天生文本文件的办法,在此就不做先容了)

  CSV文件先容(逗号分开文件)

  选择该项体系将创立一个可供下载的CSV文件;CSV是最通用的一种文件格局,它能够十分简单地被导进各类PC表格及数据库中。

  请注重即便选择表格作为输入格局,仍旧能够将了局下载CSV文件。在表格输入屏幕的底部,显现有"CSV文件"选项,点击它便可下载该文件。

  假如您把扫瞄器设置为将您的电子表格软件与文本(TXT)/逗号分开文件(CSV)相干联,当您下载该文件时,该文件将主动翻开。下载上去后,假如当地已安装EXCEL,点击此文件,便可主动用EXCEL软件翻开此文件。减少客户内IT专业人才缺乏带来的影响。ASP的客户员工利用浏览器进入相关的应用软件,简单易用,无需专业技术支持。
老尸 该用户已被删除
沙发
发表于 2015-1-19 05:32:58 | 只看该作者
没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。
不帅 该用户已被删除
板凳
发表于 2015-2-5 15:55:01 | 只看该作者
封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。
乐观 该用户已被删除
地板
发表于 2015-2-12 21:28:27 | 只看该作者
没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。
透明 该用户已被删除
5#
发表于 2015-3-3 09:50:28 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
飘灵儿 该用户已被删除
6#
发表于 2015-3-11 10:24:13 | 只看该作者
封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。
灵魂腐蚀 该用户已被删除
7#
发表于 2015-3-18 09:54:16 | 只看该作者
没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。
简单生活 该用户已被删除
8#
发表于 2015-3-25 20:16:16 | 只看该作者
作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-21 03:21

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表