欢迎光临
我们一直在努力

ASP导出Excel数据的四种方法-ASP教程,ASP应用

建站超值云服务器,限时71元/月

一、使用owc

  什么是owc?

  owc是office web compent的缩写,即microsoft的office web组件,它为在web中绘制图形提供了灵活的同时也是最基本的机制。在一个intranet环境中,如果可以假设客户机上存在特定的浏览器和一些功能强大的软件(如ie5和office 2000),那么就有能力利用office web组件提供一个交互式图形开发环境。这种模式下,客户端工作站将在整个任务中分担很大的比重。

<%option explicit

class excelgen

private objspreadsheet

private icoloffset

private irowoffset

sub class_initialize()

set objspreadsheet = server.createobject("owc.spreadsheet")

irowoffset = 2

icoloffset = 2

end sub

sub class_terminate()

set objspreadsheet = nothing clean up

end sub

public property let columnoffset(icoloff)

if icoloff > 0 then

icoloffset = icoloff

else

icoloffset = 2

end if

end property

public property let rowoffset(irowoff)

if irowoff > 0 then

irowoffset = irowoff

else

irowoffset = 2

end if

end property sub generateworksheet(objrs)

populates the excel worksheet based on a recordsets contents

start by displaying the titles

if objrs.eof then exit sub

dim objfield, icol, irow

icol = icoloffset

irow = irowoffset

for each objfield in objrs.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

next objfield

display all of the data

do while not objrs.eof

irow = irow + 1

icol = icoloffset

for each objfield in objrs.fields

if isnull(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

end if

icol = icol + 1

next objfield

objrs.movenext

loop

end sub function saveworksheet(strfilename)

save the worksheet to a specified filename

on error resume next

call objspreadsheet.activesheet.export(strfilename, 0)

saveworksheet = (err.number = 0)

end function

end class

dim objrs

set objrs = server.createobject("adodb.recordset")

objrs.open "select * from xxxx", "provider=sqloledb.1;persist security

info=true;user id=xxxx;password=xxxx;initial catalog=xxxx;data source=xxxx;"

dim savename

savename = request.cookies("savename")("name")

dim objexcel

dim excelpath

excelpath = "excel\" & savename & ".xls"

set objexcel = new excelgen

objexcel.rowoffset = 1

objexcel.columnoffset = 1

objexcel.generateworksheet(objrs)

if objexcel.saveworksheet(server.mappath(excelpath)) then

response.write "<html><body bgcolor=gainsboro text=#000000>已保存为excel文件.

<a href=" & server.urlencode(excelpath) & ">下载</a>"

else

response.write "在保存过程中有错误!"

end if

set objexcel = nothing

objrs.close

set objrs = nothing

%>

  二、用excel的application组件在客户端导出到excel或word

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

<input type="hidden" name="out_word" onclick="vbscript:builddoc" value="导出到word" class="notprint">

<input type="hidden" name="out_excel" onclick="automateexcel();" value="导出到excel" class="notprint">

  导出到excel代码

<script language="javascript">

<!–

function automateexcel()

{

// start excel and get application object.

var oxl = new activexobject("excel.application");

// get a new workbook.

var owb = oxl.workbooks.add();

var osheet = owb.activesheet;

var table = document.all.data;

var hang = table.rows.length;

var lie = table.rows(0).cells.length;

// add table headers going cell by cell.

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代码

<script language="vbscript">

sub builddoc

set table = document.all.data

row = table.rows.length

column = table.rows(1).cells.length

set objworddoc = createobject("word.document")

objworddoc.application.documents.add thetemplate, false

objworddoc.application.visible=true

dim thearray(20,10000)

for i=0 to row-1

for j=0 to column-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("")

set rngpara = objworddoc.application.activedocument.paragraphs(1).range

with rngpara

.bold = true //将标题设为粗体

.paragraphformat.alignment = 1 //将标题居中

.font.name = "隶书" //设定标题字体

.font.size = 18 //设定标题字体大小

end with

set rngcurrent = objworddoc.application.activedocument.paragraphs(3).range

set tabcurrent = objworddoc.application.activedocument.tables.add(rngcurrent,row,column)

for i = 1 to column

objworddoc.application.activedocument.tables(1).rows(1).cells(i).range.insertafter thearray(i,1)

objworddoc.application.activedocument.tables(1).rows(1).cells(i).range.paragraphformat.alignment=1

next

for i =1 to column

for j = 2 to row

objworddoc.application.activedocument.tables(1).rows(j).cells(i).range.insertafter thearray(i,j)

objworddoc.application.activedocument.tables(1).rows(j).cells(i).range.paragraphformat.alignment=1

next

next

end sub

</script>

  三、直接在ie中打开,再存为excel文件

  把读出的数据用<table>格式,在网页中显示出来,同时,加上下一句即可把excel表在客客户端显示。

<%response.contenttype ="application/vnd.ms-excel"%>

  注意:显示的页面中,只把<table>输出,最好不要输出其他表格以外的信息。

  四、导出以半角逗号隔开的csv

  用fso方法生成文本文件的方法,生成一个扩展名为csv文件。此文件,一行即为数据表的一行。生成数据表字段用半角逗号隔开。(有关fso生成文本文件的方法,在此就不做介绍了)

  csv文件介绍 (逗号分隔文件)

  选择该项系统将创建一个可供下载的csv 文件; csv是最通用的一种文件格式,它可以非常容易地被导入各种pc表格及数据库中。

  请注意即使选择表格作为输出格式,仍然可以将结果下载csv文件。在表格输出屏幕的底部,显示有 "csv 文件"选项,点击它即可下载该文件。

  如果您把浏览器配置为将您的电子表格软件与文本(txt)/逗号分隔文件(csv) 相关联,当您下载该文件时,该文件将自动打开。下载下来后,如果本地已安装excel,点击此文件,即可自动用excel软件打开此文件。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » ASP导出Excel数据的四种方法-ASP教程,ASP应用
分享到: 更多 (0)