用xml模块方式导出多种offcie文件

     我们在开发网站时,有很大一部分人采用的是MVC模式,而V是代表视图,关于视图开发的语言,都有语法简单,开发迅速的特点,比如说velocity,jstl等等,而通常用这种语言写成的文件我们通常称其为模板。模板,从名字上可以得出,这是一种通用具有参照性的样板,所有的东西都是按照它的比例剪栽而成的。
 
 在采用MVC方式开发html页时,因为html是普通文本表示的,我们就会用如下形式表html
 

代码
 1    <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" >
 2    < html  xmlns ="http://www.w3.org/1999/xhtml"  xml:lang ="zh-CN"  lang ="zh-CN" >
 3    < head >
 4     < title > #if($title) $title - #end xxx网 </ title >
 5     < meta  http-equiv ="Content-Type"  content ="text/html; charset=utf-8"   />
 6     < meta  http-equiv ="Content-Language"  content ="cn" />
 7     < meta  content ="all"  name ="robots" />
 8     < meta  name ="author"  content ="mailto:netcorner@live.com%22/>
 9    <meta name=" copyright" content ="http://www.xxx.com%22/>
10    <meta name=" description" content ="$!title" />
11     < meta  name ="keywords"  content ="$!title" />
12     < link  rel ="icon"  href ="$applicationPath/favicon.ico"  type ="image/x-icon" />
13     < script  src ="$applicationPath/script/jquery1.3.2.js"  type ="text/javascript" ></ script >
14    </ head >
15    < body >
16   #body()
17    </ body >
18    </ html >

 

 
 
 通过上面的形式,我们程序就可以把以“${var}”形式的替换成我们想要的数据,而且处理起来很方便,页面和逻辑进行区分,但是对于我们的office文件(如excel,word的文件)应该怎么处理呢?因为他们不是文本的,所以通常情况下想要以excel或word文件模板像html一样做模板处理就相当困难了!那么有什么办法处理这种情况呢?
 
 在开发过程中,我们会遇到很多情况是这样的:要导出数据,导出成excel、PDF、word形式的,有的如果想打印,也可以直接导出这几种形式,以方便用户打印。这几种情况在开发中是经常存的,对于开发OA时,这种情况遇到的就更多一些了。
 
 那么有没有把像excel、word文档当成模板处理的呢?
 
 其实有很多方式可以实现这种情况的,我知道的大致有这几种情况。
 
 1.通过操作office类库,在程序中进行操作
  这种情况,得调用office类库,而且还得写不少代码。
 
 2.用openxml代替office的二进制代码
  感觉很复杂,也不知道openxml文件是否支持office早期版本。
 
 3.用office文件另存为xml形式来表示
 
 例:
  我建立doc文件,在文档里面输入“aaaaaaaaaaaaaaaaa”,并别存为“XML文档(*.xml)”,当你直接打开这个xml文件是就是直接打开word文档了,而文档里面就是我输入的数据。用记事本打开刚才保存的xml文件,发现里面就是一个文本格式的。代码如下:
  

代码
<? xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<? mso-application progid="Word.Document" ?>
< w:wordDocument  xmlns:w ="http://schemas.microsoft.com/office/word/2003/wordml"  xmlns:v ="urn:schemas-microsoft-com:vml"  xmlns:w10 ="urn:schemas-microsoft-com:office:word"  xmlns:sl ="http://schemas.microsoft.com/schemaLibrary/2003/core"  xmlns:aml ="http://schemas.microsoft.com/aml/2001/core"  xmlns:wx ="http://schemas.microsoft.com/office/word/2003/auxHint"  xmlns:o ="urn:schemas-microsoft-com:office:office"  xmlns:dt ="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"  w:macrosPresent ="no"  w:embeddedObjPresent ="no"  w:ocxPresent ="no"  xml:space ="preserve" >< o:DocumentProperties >< o:Title > aaaaaaaaaaaaaaaaa </ o:Title >< o:Author > netcorner </ o:Author >< o:LastAuthor > netcorner </ o:LastAuthor >< o:Revision > 2 </ o:Revision >< o:TotalTime > 0 </ o:TotalTime >< o:Created > 2010-03-10T05:18:00Z </ o:Created >< o:LastSaved > 2010-03-10T05:18:00Z </ o:LastSaved >< o:Pages > 1 </ o:Pages >< o:Words > 2 </ o:Words >< o:Characters > 16 </ o:Characters >< o:Lines > 1 </ o:Lines >< o:Paragraphs > 1 </ o:Paragraphs >< o:CharactersWithSpaces > 17 </ o:CharactersWithSpaces >< o:Version > 11.6359 </ o:Version ></ o:DocumentProperties >< w:fonts >< w:defaultFonts  w:ascii ="Times New Roman"  w:fareast ="宋体"  w:h-ansi ="Times New Roman"  w:cs ="Times New Roman" />< w:font  w:name ="宋体" >< w:altName  w:val ="SimSun" />< w:panose-1  w:val ="02010600030101010101" />< w:charset  w:val ="86" />< w:family  w:val ="Auto" />< w:pitch  w:val ="variable" />< w:sig  w:usb-0 ="00000003"  w:usb-1 ="288F0000"  w:usb-2 ="00000016"  w:usb-3 ="00000000"  w:csb-0 ="00040001"  w:csb-1 ="00000000" /></ w:font >< w:font  w:name ="@宋体" >< w:panose-1  w:val ="02010600030101010101" />< w:charset  w:val ="86" />< w:family  w:val ="Auto" />< w:pitch  w:val ="variable" />< w:sig  w:usb-0 ="00000003"  w:usb-1 ="288F0000"  w:usb-2 ="00000016"  w:usb-3 ="00000000"  w:csb-0 ="00040001"  w:csb-1 ="00000000" /></ w:font ></ w:fonts >< w:styles >< w:versionOfBuiltInStylenames  w:val ="4" />< w:latentStyles  w:defLockedState ="off"  w:latentStyleCount ="156" />< w:style  w:type ="paragraph"  w:default ="on"  w:styleId ="a" >< w:name  w:val ="Normal" />< wx:uiName  wx:val ="正文" />< w:pPr >< w:widowControl  w:val ="off" />< w:jc  w:val ="both" /></ w:pPr >< w:rPr >< wx:font  wx:val ="Times New Roman" />< w:kern  w:val ="2" />< w:sz  w:val ="21" />< w:sz-cs  w:val ="24" />< w:lang  w:val ="EN-US"  w:fareast ="ZH-CN"  w:bidi ="AR-SA" /></ w:rPr ></ w:style >< w:style  w:type ="character"  w:default ="on"  w:styleId ="a0" >< w:name  w:val ="Default Paragraph Font" />< wx:uiName  wx:val ="默认段落字体" />< w:semiHidden /></ w:style >< w:style  w:type ="table"  w:default ="on"  w:styleId ="a1" >< w:name  w:val ="Normal Table" />< wx:uiName  wx:val ="普通表格" />< w:semiHidden />< w:rPr >< wx:font  wx:val ="Times New Roman" /></ w:rPr >< w:tblPr >< w:tblInd  w:w ="0"  w:type ="dxa" />< w:tblCellMar >< w:top  w:w ="0"  w:type ="dxa" />< w:left  w:w ="108"  w:type ="dxa" />< w:bottom  w:w ="0"  w:type ="dxa" />< w:right  w:w ="108"  w:type ="dxa" /></ w:tblCellMar ></ w:tblPr ></ w:style >< w:style  w:type ="list"  w:default ="on"  w:styleId ="a2" >< w:name  w:val ="No List" />< wx:uiName  wx:val ="无列表" />< w:semiHidden /></ w:style ></ w:styles >< w:docPr >< w:view  w:val ="print" />< w:zoom  w:percent ="200" />< w:bordersDontSurroundHeader />< w:bordersDontSurroundFooter />< w:proofState  w:spelling ="clean"  w:grammar ="clean" />< w:attachedTemplate  w:val ="" />< w:defaultTabStop  w:val ="420" />< w:drawingGridVerticalSpacing  w:val ="156" />< w:displayHorizontalDrawingGridEvery  w:val ="0" />< w:displayVerticalDrawingGridEvery  w:val ="2" />< w:punctuationKerning />< w:characterSpacingControl  w:val ="CompressPunctuation" />< w:optimizeForBrowser />< w:validateAgainstSchema />< w:saveInvalidXML  w:val ="off" />< w:ignoreMixedContent  w:val ="off" />< w:alwaysShowPlaceholderText  w:val ="off" />< w:compat >< w:spaceForUL />< w:balanceSingleByteDoubleByteWidth />< w:doNotLeaveBackslashAlone />< w:ulTrailSpace />< w:doNotExpandShiftReturn />< w:adjustLineHeightInTable />< w:breakWrappedTables />< w:snapToGridInCell />< w:wrapTextWithPunct />< w:useAsianBreakRules />< w:dontGrowAutofit />< w:useFELayout /></ w:compat ></ w:docPr >< w:body >< wx:sect >< w:p >< w:pPr >< w:rPr >< w:rFonts  w:hint ="fareast" /></ w:rPr ></ w:pPr >< w:r >< w:rPr >< w:rFonts  w:hint ="fareast" /></ w:rPr >< w:t > aaaaaaaaaaaaaaaaa </ w:t ></ w:r ></ w:p >< w:sectPr >< w:pgSz  w:w ="11906"  w:h ="16838" />< w:pgMar  w:top ="1440"  w:right ="1800"  w:bottom ="1440"  w:left ="1800"  w:header ="851"  w:footer ="992"  w:gutter ="0" />< w:cols  w:space ="425" />< w:docGrid  w:type ="lines"  w:line-pitch ="312" /></ w:sectPr ></ wx:sect ></ w:body ></ w:wordDocument >

而刚才输入的文字"aaaaaaaaaaaaaaaaa",就在其中。如果你需用用变量,那么就可以用变量替换了。

那么程序应该如何处理该文档呢?

其实处理方式和MVC中处理html一样的,只是把这个office的xml文档当作html模板处理并,在程序端另存为文档时也得处理一下,如下列代码:

 

代码
1              HttpContext.Current.Response.AppendHeader( " Content-Disposition " " attachment;filename=Word.doc " );
2              HttpContext.Current.Response.Charset  =   " UTF-8 " ;
3              HttpContext.Current.Response.ContentEncoding  =  System.Text.Encoding.UTF8;
4              HttpContext.Current.Response.ContentType  =   " text/xml " ;
5              HttpContext.Current.Response.Write(TemplateProcess.Output(MyContext,  " /layout/include/ "   +   this .MethodName)); // 模板处理的office模板文本代码
6              HttpContext.Current.Response.End();

 

通过上面形式,就可以把office文件当作文本模板导出office可以正常显示读取的word或excel文件了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值