导出网页中的table到excelWord文档下载推荐.docx

上传人:b****6 文档编号:17315683 上传时间:2022-12-01 格式:DOCX 页数:10 大小:20.39KB
下载 相关 举报
导出网页中的table到excelWord文档下载推荐.docx_第1页
第1页 / 共10页
导出网页中的table到excelWord文档下载推荐.docx_第2页
第2页 / 共10页
导出网页中的table到excelWord文档下载推荐.docx_第3页
第3页 / 共10页
导出网页中的table到excelWord文档下载推荐.docx_第4页
第4页 / 共10页
导出网页中的table到excelWord文档下载推荐.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

导出网页中的table到excelWord文档下载推荐.docx

《导出网页中的table到excelWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《导出网页中的table到excelWord文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。

导出网页中的table到excelWord文档下载推荐.docx

itemid=0000000065

***************************************************************************************************

一、将网页资料以excel报表以线上浏览方式呈现

xls651.jsp原始码如下

<

%@pagecontentType="

application/msexcel"

%>

!

--以上这行设定本网页为excel格式的网页-->

%

 

response.setHeader("

Content-disposition"

"

inline;

filename=test1.xls"

//以上这行设定传送到前端浏览器时的档名为test1.xls

//就是靠这一行,让前端浏览器以为接收到一个excel档

%>

html>

head>

title>

Excel档案呈现方式<

/title>

/head>

body>

<

tableborder="

1"

width="

100%"

tr>

td>

姓名<

/td>

身份证字号<

生日<

/tr>

李玟<

N111111111<

1900/11/12<

梁静如<

N222222222<

1923/10/1<

张惠妹<

N333333333<

1934/12/18<

/table>

/body>

/html>

二、将网页资料以excel报表以下载的方式呈现

这个jsp档和上一个差不多,只有差别在这一行:

线上浏览的方式:

下载的方式:

attachment;

filename=test2.xls"

附注:

1.以上纯以静态网页的方式呈现excel档,配合资料库,你便能以动态的报表方式做出excel报表了

2.完全不用安装任何元件,或只能受限於win平台,一个简单的方式解决你的报表需求

3.聪明的你,应该能举一反三,知道如何将网页资料以word的doc格式展现了吧!

(是不是只要把contentType改成"

application/msword"

以及filename的副档名改成.doc就可以了!

试了一下,发现不错,于是就用这个来做了。

功能终于实现。

细想一下,其实这个方法也蛮不错的,只是要实现功能的话,代码写起来要稍微比那个javascirpt麻烦点。

也幸好office的功能比较强大,呵呵

感想:

工作以后,按客户的要求,一直要做这个做那个,其实也正是因为这样,学会了很多东西,自学能力也增强不少,工作的这几个月几乎比在大学里几年中所学到的还要多。

也许也正是因为这样吧,会有点点小小的成就感,也就让我更加喜欢工作,不觉得工作乏味,嘿~或者这也是一种动力吧

Web中Table转excel

经常看到有些人问怎么把Table的资料转到Excel里面去,很多人在碰到这个问题都先考虑用execl.appliction,使用不太好,首先必需要掌握它的一些内部用法,其次它在客户端使用时涉及安全性,以下介绍三种方法:

方法一:

用单纯的文本格式实现

该方法相当简单,以下给出代码,各位就容易明白

%setfso=server.createobject("

scripting.filesystemobject"

strExcelFile=server.MapPath("

txtToExcel.xls"

iffso.fileExists(strExcelFile)thenfso.deletefilestrExcelFile

SetxslFile=fso.CreateTextFile(strExcelFile,True)

xslFile.WriteLine("

df"

&

vbTab&

"

345"

vbLf&

fe"

mon"

vbLf)

xslFile.Close

setfso=nothing

response.write"

OK"

原理:

相信大家都知道,Excel是可以打开文本文件的,而对于里面的文本内容Excel则会这样处理:

如果遇到[制表符]Tab键则跳下一列,如果遇到[换行符]则换下一行,所以根据这个规则我们整理一下就可以产生单一表格式Excel文件了,

优点:

掌握简单,纯粹的文字整理而已。

缺点:

效率较低,把一个较多内容的table转成Excel档要则执行较长的循环(),而文档格式只能是规则的行列格式,对表格不能做更多的设置

方法二:

用OWC实现:

此方法也简单,只是少为人知而已,同样先给出代码:

scriptlanguage="

javascript"

functionexportExcel(atblData){

if(typeof(EXPORT_OBJECT)!

="

object"

){

document.body.insertAdjacentHTML("

afterBegin"

OBJECTstyle=’display:

none’classid=clsid:

0002E510-0000-0000-C000-000000000046id=EXPORT_OBJECT>

/Object>

"

}

with(EXPORT_OBJECT){

DataType="

HTMLData"

;

HTMLData=atblData.outerHTML;

try{

ActiveSheet.Export("

C:

\\owcToExcel.xls"

0);

alert(’汇出完毕’);

catch(e){

alert(’汇出Excel表失败,请确定已安装Excel2000(或更高版本),并且没打开同名xls文件’);

}

/script>

tableid="

tblData"

gdsssa<

445<

inputtype="

button"

value="

export"

onclick="

exportExcel(tblData)"

大家应该看出这是前端脚本html实现,其实这是利用OWC的功能来转出Excel档,我们只需整理出一个Table档,基本上我们整理出的Table在网页上是什么样子,在Excel上就是什么样子,但要注意:

网页里的<

style>

不会汇出到Excel中,所以网页里的样式表不会在Excel中看到.

掌握也很简单,而且可以在前台实现,并且不会设计权限问题,为前台产生Excel档存到客户端而伤透脑筋的兄弟姐妹们,这个方法.

客户端必需安装Excel2000或更高版本(不过这个一般都不成问题的了),而且样式表的内容不能输出。

方法三:

利用XML来产生

首先讲讲道理,先随便编一个Excel档,然后把它另存为*.htm文件,再用文本编辑器打开,是不是跟我们一般的网页内容非常相似,那么我们是不是只需要整理出这些文字出来就可以了,关键是怎样整理出这份文本文字档案呢

我们分析一下这些文字,第一部分是<

样式表的定义,第二部分是Excel特有的定义内容,第三部分是则是最熟悉的Table数据了,那么对于这三部分,前两部分基本是固定了,我整理一下基本只需要这些:

htmlxmlns:

s="

uuid:

BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"

xmlns:

dt="

C2F41010-65B3-11d1-A29F-00AA00C14882"

rs="

urn:

schemas-microsoft-com:

rowset"

z="

#RowsetSchema"

o="

office:

office"

x="

excel"

xmlns="

//www.w3.org/TR/REC-html40"

metahttp-equiv="

Content-Type"

content="

text/html;

/>

xl24{mso-style-parent:

style0;

mso-number-format:

\@"

text-align:

right;

/style>

xml>

x:

ExcelWorkbook>

ExcelWorksheets>

ExcelWorksheet>

Name>

Sheet1<

/x:

WorksheetOptions>

ProtectContents>

False<

ProtectObjects>

ProtectScenarios>

/xml>

然后是第三部分,我们可以通过recordset来读取数据的指定内容,而且可以通过save来直接把那些内容生成一个xml文件,所以我们只需要根据这个xml文件写一个xsl文件来转换就行了,那么这个方法是我认为最好的,因为我们可以任意设定Table的样式,同时不必诸多循环,有效解决Excel一些自做聪明的小动作

这种方法的优点是你可以定制很好的格式的Excel文件,只要你xsl会写,包括统计都可以做出来,所以懂xsl的人估计来到这里比较明白了,而且效率很高,不用再慢慢循环了

缺点嘛:

就是技术要求高了一点,至于算有多高,各人不同了。

最后附上代码:

===========xmlToExcel.asp=============

%SetConn=Server.CreateObject("

ADODB.Connection"

Conn.Open"

Provider=Microsoft.Jet.OLEDB.4.0;

DataSource="

&

Server.MapPath("

comp_apply.mdb"

’strSelect="

selectdept_no,dept_name,dept_checkfromdept_data"

strSelect="

select*fromuser_data"

’改变该SQL语句则可改变excel的内容

Setrs=server.createobject("

adodb.recordset"

rs.openstrSelect,conn,1,1

setfso=server.createobject("

strXmlFile=server.MapPath("

xmlToExcelTmp.xml"

strXslFile=server.MapPath("

xmlToExcel.xsl"

xmlToExcel.xls"

iffso.fileExists(strXmlFile)thenfso.deletefilestrXmlFile

rs.savestrXmlFile,1

rs.close

Conn.close

setConn=nothing

setxmlDoc=server.createobject("

microsoft.xmldom"

setxslDoc=server.createobject("

xslDoc.load(strXslFile)

xmlDoc.load(strXmlFile)

xmlDoc.loadXml(xmlDoc.transformNode(xslDoc))

iffso.fileExists(strExcelFile)thenfso.deletefilestrExcelFile

SetxslFile=fso.CreateTextFile(strExcelFile,True)

xslFile.WriteLine(xmlDoc.xml)

xslFile.Close

fso.deletefilestrXmlFile

setfso=nothing

response.redirect"

==============xmlToExcel.xsl=============

xsl:

stylesheetversion="

1.0"

xsl="

//www.w3.org/1999/XSL/Transform"

xmlns:

s=’uuid:

BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882’

dt=’uuid:

C2F41010-65B3-11d1-A29F-00AA00C14882’

rs=’urn:

rowset’

z=’#RowsetSchema’>

outputmethod="

html"

indent="

yes"

/>

templatematch="

xml/rs:

data"

charset=gb2312"

.xl24{mso-style-parent:

cellpadding="

0"

cellspacing="

for-eachselect="

/xml/s:

Schema/s:

ElementType/s:

AttributeType"

th>

value-ofselect="

@name"

/th>

/xsl:

for-each>

apply-templatesselect="

z:

row"

template>

variablename="

position"

position()"

variable>

--读取定义好的数据列名-->

strColumn"

strvalue"

/xml/rs:

data/z:

row[position()=$position]/@*[name()=$strColumn]"

tdclass="

xl24"

$strvalue"

stylesheet>

补充一下:

对于第三种方法因为Recordset用Save方法后有时对于那些null的字段在row中不会有它的字段名,所以我现在通过去ElementType那里读取字段名,以保证不造成到时的Excel的纵列方位出错,但这个问题在.net里的DataSet确很好解决,因为DataSet中如果碰到这种null的数据它也会有<

columnName/>

这样的空节点出现。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1