1、itemid=0000000065*一、将网页资料以excel报表以线上浏览方式呈现 xls651.jsp原始码如下 !- 以上这行设定本网页为excel格式的网页 -% response.setHeader(Content-disposition,inline; filename=test1.xls /以上这行设定传送到前端浏览器时的档名为test1.xls /就是靠这一行,让前端浏览器以为接收到一个excel档 %htmlheadtitleExcel档案呈现方式/headbody td姓名身份证字号生日李玟N1111111111900/11/12梁静如N2222222221923/10/1
2、张惠妹N3333333331934/12/18/body/html二、将网页资料以excel报表以下载的方式呈现这个jsp档和上一个差不多,只有差别在这一行:线上浏览的方式:下载的方式:attachment; filename=test2.xls附注: 1.以上纯以静态网页的方式呈现excel档,配合资料库,你便能以动态的报表方式做出excel报表了2.完全不用安装任何元件,或只能受限於win平台,一个简单的方式解决你的报表需求 3.聪明的你,应该能举一反三,知道如何将网页资料以word的doc格式展现了吧!(是不是只要把contentType改成application/msword以及fil
3、ename的副档名改成.doc就可以了!)试了一下,发现不错,于是就用这个来做了。功能终于实现。细想一下,其实这个方法也蛮不错的,只是要实现功能的话,代码写起来要稍微比那个javascirpt麻烦点。也幸好office的功能比较强大,呵呵感想:工作以后,按客户的要求,一直要做这个做那个,其实也正是因为这样,学会了很多东西,自学能力也增强不少,工作的这几个月几乎比在大学里几年中所学到的还要多。也许也正是因为这样吧,会有点点小小的成就感,也就让我更加喜欢工作,不觉得工作乏味,嘿或者这也是一种动力吧Web中Table转excel经常看到有些人问怎么把Table的资料转到Excel里面去,很多人在碰到
4、这个问题都先考虑用execl.appliction,使用不太好,首先必需要掌握它的一些内部用法,其次它在客户端使用时涉及安全性,以下介绍三种方法:方法一:用单纯的文本格式实现 该方法相当简单,以下给出代码,各位就容易明白 % set fso=server.createobject(scripting.filesystemobject) strExcelFile=server.MapPath(txtToExcel.xls if fso.fileExists(strExcelFile) then fso.deletefile strExcelFile Set xslFile = fso.Creat
5、eTextFile(strExcelFile , True) xslFile.WriteLine(df & vbTab & 345 vbLf &femonvbLf) xslFile.Close set fso=nothing response.write OK原理:相信大家都知道,Excel是可以打开文本文件的,而对于里面的文本内容Excel则会这样处理:如果遇到制表符Tab键则跳下一列,如果遇到换行符则换下一行,所以根据这个规则我们整理一下就可以产生单一表格式Excel文件了, 优点:掌握简单,纯粹的文字整理而已。缺点:效率较低,把一个较多内容的table转成Excel档要则执行较长的循环(
6、),而文档格式只能是规则的行列格式,对表格不能做更多的设置 方法二:用OWC实现: 此方法也简单,只是少为人知而已,同样先给出代码:script language=javascript function exportExcel(atblData) if (typeof(EXPORT_OBJECT)!=object) document.body.insertAdjacentHTML(afterBeginOBJECT style=display:none classid=clsid:0002E510-0000-0000-C000-000000000046 id=EXPORT_OBJECT/Obje
7、ct with (EXPORT_OBJECT) DataType = HTMLData; HTMLData =atblData.outerHTML; try ActiveSheet.Export(C:owcToExcel.xls, 0); alert(汇出完毕); catch (e) alert(汇出Excel表失败,请确定已安装Excel2000(或更高版本),并且没打开同名xls文件); /scripttable id=tblDatagdsssa445input type=button value=export onclick=exportExcel(tblData)大家应该看出这是前端脚
8、本html实现,其实这是利用OWC的功能来转出Excel档,我们只需整理出一个Table档,基本上我们整理出的Table在网页上是什么样子,在Excel上就是什么样子,但要注意:网页里的不会汇出到Excel中,所以网页里的样式表不会在Excel中看到. 掌握也很简单,而且可以在前台实现,并且不会设计权限问题,为前台产生Excel档存到客户端而伤透脑筋的兄弟姐妹们,这个方法. 客户端必需安装Excel2000或更高版本(不过这个一般都不成问题的了),而且样式表的内容不能输出。方法三:利用XML来产生 首先讲讲道理,先随便编一个Excel档,然后把它另存为*.htm文件,再用文本编辑器打开,是不是
9、跟我们一般的网页内容非常相似,那么我们是不是只需要整理出这些文字出来就可以了,关键是怎样整理出这份文本文字档案呢 我们分析一下这些文字,第一部分是xl24mso-style-parent:style0;mso-number-format:text-align:right;/stylexmlx:ExcelWorkbookExcelWorksheetsExcelWorksheetNameSheet1ProtectContentsFalseProtectScenarios/xml 然后是第三部分,我们可以通过recordset来读取数据的指定内容,而且可以通过save来直接把那些内容生成一个xml文
10、件,所以我们只需要根据这个xml文件写一个xsl文件来转换就行了,那么这个方法是我认为最好的,因为我们可以任意设定Table的样式,同时不必诸多循环,有效解决Excel一些自做聪明的小动作 这种方法的优点是你可以定制很好的格式的Excel文件,只要你xsl会写,包括统计都可以做出来,所以懂xsl的人估计来到这里比较明白了,而且效率很高,不用再慢慢循环了 缺点嘛:就是技术要求高了一点,至于算有多高,各人不同了。 最后附上代码:=xmlToExcel.asp= % Set Conn=Server.CreateObject(ADODB.Connection Conn.Open Provider =
11、Microsoft.Jet.OLEDB.4.0; Data Source =& Server.MapPath(comp_apply.mdb strSelect=select dept_no,dept_name,dept_check from dept_data strSelect=select * from user_data 改变该SQL语句则可改变excel的内容 Set rs=server.createobject(adodb.recordset rs.open strSelect,conn,1,1 set fso=server.createobject( strXmlFile=serv
12、er.MapPath(xmlToExcelTmp.xml strXslFile=server.MapPath(xmlToExcel.xslxmlToExcel.xls if fso.fileExists(strXmlFile) then fso.deletefile strXmlFile rs.save strXmlFile,1 rs.close Conn.close set Conn=nothing set xmlDoc=server.createobject(microsoft.xmldomset xslDoc=server.createobject(xslDoc.load(strXslF
13、ile) xmlDoc.load(strXmlFile) xmlDoc.loadXml(xmlDoc.transformNode(xslDoc) if fso.fileExists(strExcelFile) then fso.deletefile strExcelFile Set xslFile = fso.CreateTextFile(strExcelFile , True) xslFile.WriteLine(xmlDoc.xml) xslFile.Close fso.deletefile strXmlFile set fso=nothing response.redirect =xml
14、ToExcel.xsl= xsl:stylesheet version=1.0xsl=/www.w3.org/1999/XSL/Transformxmlns:s=uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882 dt=uuid:C2F41010-65B3-11d1-A29F-00AA00C14882 rs=urn:rowset z=#RowsetSchemaoutput method=html indent=yes /template match=xml/rs:datacharset=gb2312.xl24mso-style-parent: cellpaddi
15、ng=0 cellspacing=for-each select=/xml/s:Schema/s:ElementType/s:AttributeTypethvalue-of select=name/th/xsl:for-eachapply-templates select=z:rowtemplatevariable name=positionposition()variable- 读取定义好的数据列名 -strColumnstrvalue/xml/rs:data/z:rowposition()=$position/*name() = $strColumntd class=xl24$strvaluestylesheet 补充一下:对于第三种方法因为Recordset 用 Save方法后有时对于那些null的字段在row中不会有它的字段名,所以我现在通过去ElementType那里读取字段名,以保证不造成到时的Excel的纵列方位出错,但这个问题在.net里的DataSet确很好解决,因为DataSet中如果碰到这种null的数据它也会有这样的空节点出现。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1