我们在开发网站时,有很大一部分人采用的是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 <htmlxmlns="http://www.w3.org/1999/xhtml"xml:lang="zh-CN"lang="zh-CN">3 <head>4 <title>#if($title) $title - #end xxx网</title>5 <metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/>6 <metahttp-equiv="Content-Language"content="cn"/>7 <metacontent="all"name="robots"/>8 <metaname="author"content="mailto:netcorner@live.com%22/>9 <meta name="copyright" content="http://www.xxx.com%22/>10 <meta name="description" content="$!title"/>11 <metaname="keywords"content="$!title"/>12 <linkrel="icon"href="$applicationPath/favicon.ico"type="image/x-icon"/>13 <scriptsrc="$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:wordDocumentxmlns: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:defaultFontsw:ascii="Times New Roman"w:fareast="宋体"w:h-ansi="Times New Roman"w:cs="Times New Roman"/><w:fontw:name="宋体"><w:altNamew:val="SimSun"/><w:panose-1w:val="02010600030101010101"/><w:charsetw:val="86"/><w:familyw:val="Auto"/><w:pitchw:val="variable"/><w:sigw: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:fontw:name="@宋体"><w:panose-1w:val="02010600030101010101"/><w:charsetw:val="86"/><w:familyw:val="Auto"/><w:pitchw:val="variable"/><w:sigw: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:versionOfBuiltInStylenamesw:val="4"/><w:latentStylesw:defLockedState="off"w:latentStyleCount="156"/><w:stylew:type="paragraph"w:default="on"w:styleId="a"><w:namew:val="Normal"/><wx:uiNamewx:val="正文"/><w:pPr><w:widowControlw:val="off"/><w:jcw:val="both"/></w:pPr><w:rPr><wx:fontwx:val="Times New Roman"/><w:kernw:val="2"/><w:szw:val="21"/><w:sz-csw:val="24"/><w:langw:val="EN-US"w:fareast="ZH-CN"w:bidi="AR-SA"/></w:rPr></w:style><w:stylew:type="character"w:default="on"w:styleId="a0"><w:namew:val="Default Paragraph Font"/><wx:uiNamewx:val="默认段落字体"/><w:semiHidden/></w:style><w:stylew:type="table"w:default="on"w:styleId="a1"><w:namew:val="Normal Table"/><wx:uiNamewx:val="普通表格"/><w:semiHidden/><w:rPr><wx:fontwx:val="Times New Roman"/></w:rPr><w:tblPr><w:tblIndw:w="0"w:type="dxa"/><w:tblCellMar><w:topw:w="0"w:type="dxa"/><w:leftw:w="108"w:type="dxa"/><w:bottomw:w="0"w:type="dxa"/><w:rightw:w="108"w:type="dxa"/></w:tblCellMar></w:tblPr></w:style><w:stylew:type="list"w:default="on"w:styleId="a2"><w:namew:val="No List"/><wx:uiNamewx:val="无列表"/><w:semiHidden/></w:style></w:styles><w:docPr><w:vieww:val="print"/><w:zoomw:percent="200"/><w:bordersDontSurroundHeader/><w:bordersDontSurroundFooter/><w:proofStatew:spelling="clean"w:grammar="clean"/><w:attachedTemplatew:val=""/><w:defaultTabStopw:val="420"/><w:drawingGridVerticalSpacingw:val="156"/><w:displayHorizontalDrawingGridEveryw:val="0"/><w:displayVerticalDrawingGridEveryw:val="2"/><w:punctuationKerning/><w:characterSpacingControlw:val="CompressPunctuation"/><w:optimizeForBrowser/><w:validateAgainstSchema/><w:saveInvalidXMLw:val="off"/><w:ignoreMixedContentw:val="off"/><w:alwaysShowPlaceholderTextw: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:rFontsw:hint="fareast"/></w:rPr></w:pPr><w:r><w:rPr><w:rFontsw:hint="fareast"/></w:rPr><w:t>aaaaaaaaaaaaaaaaa</w:t></w:r></w:p><w:sectPr><w:pgSzw:w="11906"w:h="16838"/><w:pgMarw:top="1440"w:right="1800"w:bottom="1440"w:left="1800"w:header="851"w:footer="992"w:gutter="0"/><w:colsw:space="425"/><w:docGridw: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文件了。
- hive 导出json格式 文件_Magicodes.IE在.NET Core中通过请求头导出多种格式文件
前言 在2.2里程碑中我们增加了一些新的功能,正如标题所写通过请求头进行导出我们不同格式的文件.下面我们来看一下如何使用.通过这种方式无论是对我们的数据多用途,还是说对我们的数据校验都做到了轻松易配. ...
- 使用XML的方式导出EXCEL
事务码STRANS. 1 .创建EXCEL文档模板,另存为 XML文档格式 打开文档将代码复制进STRANS的<tt:template> <tt:template>中间 部分定 ...
- xml方式导出word优缺点:
xml方式导出word优缺点: 优点: 1.代码量少,样式.内容容易控制,打印不变形,符合office标准: 2.支持Linux平台,不要求安装office: 3.可以实现固定格式文档输出: 4.支持 ...
- 第二十一章流 5 多种打开文件的方式 文件存在,文件不存在
// 第二十一章流 5 多种打开文件的方式 文件存在,文件不存在 /* ios::in 打开文件进行读操作,即读取文件中的数据 ios::out 打开文件进行写操作,即输出数据到文件中 ios::at ...
- IOC操作Bean管理XML方式(外部属性文件)
目录 IOC操作Bean管理XML方式(外部属性文件) 前情引入: 实验演示: 1.直接配置数据库信息 (1)配置德鲁伊连接池 (2)引入德鲁伊连接池jar包 (3)创建一个bean6.xml配置文件 ...
- python如何复制oracle数据_Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法...
本文实例讲述了Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法.分享给大家供大家参考.具体实现方法如下: # Export Oracle database tables ...
- c# 采用XML的方式读取OSM文件
OSM文件类似于XML文件的格式,可以通过XML的方式读取出来 1.OSM文件: <?xml version='1.0' encoding='UTF-8'?> <osm versio ...
- POST方式导出Excel文件
1.方法一: 一般情况下,我们通过ajax获取数据都是采用get方式获取,但如果ajax的请求url过长时,get方式由于浏览器对url长度不同会导致无法正常获取数据,尤其是IE. 这时候,我们需要通 ...
- node爬取app数据_node爬取拉勾网数据并导出为excel文件
前言 之前断断续续学习了node.js,今天就拿拉勾网练练手,顺便通过数据了解了解最近的招聘行情哈!node方面算是萌新一个吧,希望可以和大家共同学习和进步. 一.概要 我们首先需要明确具体的需求: ...
- python模块--json \ pickle \ shelve \ XML模块
一.json模块 之前学习过的eval内置方法可以将一个字符串转成一个python对象,不过eval方法时有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,e ...