我们在开发网站时,有很大一部分人采用的是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文件了。

转载于:https://www.cnblogs.com/netcorner/archive/2010/03/10/1682436.html

用xml模块方式导出多种offcie文件相关推荐

  1. hive 导出json格式 文件_Magicodes.IE在.NET Core中通过请求头导出多种格式文件

    前言 在2.2里程碑中我们增加了一些新的功能,正如标题所写通过请求头进行导出我们不同格式的文件.下面我们来看一下如何使用.通过这种方式无论是对我们的数据多用途,还是说对我们的数据校验都做到了轻松易配. ...

  2. 使用XML的方式导出EXCEL

    事务码STRANS. 1 .创建EXCEL文档模板,另存为 XML文档格式 打开文档将代码复制进STRANS的<tt:template> <tt:template>中间 部分定 ...

  3. xml方式导出word优缺点:

    xml方式导出word优缺点: 优点: 1.代码量少,样式.内容容易控制,打印不变形,符合office标准: 2.支持Linux平台,不要求安装office: 3.可以实现固定格式文档输出: 4.支持 ...

  4. 第二十一章流 5 多种打开文件的方式 文件存在,文件不存在

    // 第二十一章流 5 多种打开文件的方式 文件存在,文件不存在 /* ios::in 打开文件进行读操作,即读取文件中的数据 ios::out 打开文件进行写操作,即输出数据到文件中 ios::at ...

  5. IOC操作Bean管理XML方式(外部属性文件)

    目录 IOC操作Bean管理XML方式(外部属性文件) 前情引入: 实验演示: 1.直接配置数据库信息 (1)配置德鲁伊连接池 (2)引入德鲁伊连接池jar包 (3)创建一个bean6.xml配置文件 ...

  6. python如何复制oracle数据_Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法...

    本文实例讲述了Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法.分享给大家供大家参考.具体实现方法如下: # Export Oracle database tables ...

  7. c# 采用XML的方式读取OSM文件

    OSM文件类似于XML文件的格式,可以通过XML的方式读取出来 1.OSM文件: <?xml version='1.0' encoding='UTF-8'?> <osm versio ...

  8. POST方式导出Excel文件

    1.方法一: 一般情况下,我们通过ajax获取数据都是采用get方式获取,但如果ajax的请求url过长时,get方式由于浏览器对url长度不同会导致无法正常获取数据,尤其是IE. 这时候,我们需要通 ...

  9. node爬取app数据_node爬取拉勾网数据并导出为excel文件

    前言 之前断断续续学习了node.js,今天就拿拉勾网练练手,顺便通过数据了解了解最近的招聘行情哈!node方面算是萌新一个吧,希望可以和大家共同学习和进步. 一.概要 我们首先需要明确具体的需求: ...

  10. python模块--json \ pickle \ shelve \ XML模块

    一.json模块 之前学习过的eval内置方法可以将一个字符串转成一个python对象,不过eval方法时有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,e ...

最新文章

  1. mysql enum mybatis_Mybatis 枚举类处理
  2. python循环五角星做法_python实现while循环打印星星的四种形状
  3. 猪肉上的红章和蓝章有啥不同?| 今日趣图
  4. ELK套件FileBeat部署
  5. go linux 源码编译环境,修改并编译golang源码
  6. 解压tar.xz文件
  7. ❤️关于 idea 安装 Vue 插件后新建文件不显示 Vue Component 的问题及解决方法❤️
  8. 支持MYSQL的DNS服务器的搭建
  9. domain or business logic
  10. Python面向对象-0
  11. MATLAB数据拟合时出错
  12. 从 ftp 上下载文件、文件夹
  13. 优雅的使用windows
  14. Linux基础_软件包管理
  15. 首份小程序广告投放价值榜单发布:游戏、工具类小程序占主导地位
  16. HNU离散数学2022期中考试原题及答案
  17. 【转载】一文总结学习 Python 的 14 张思维导图
  18. 三相两相坐标变换matlab仿真,交流电机三相两相坐标互换及MATLAB仿真.pdf
  19. TransGAN代码复现—九天毕昇平台
  20. PL2303、CH340、ft232常用转串口工具于win10使用的解决方案

热门文章

  1. 一个壮观的雨瀑布视频
  2. spark中local模式与cluster模式使用场景_详细总结spark基于standalone、yarn集群提交作业流程...
  3. html 响应式 meta,HTML - 移动端 meta viewport
  4. 模型描述的关系模式_图解各种管理模型大全--管理模型大全
  5. multiprocessing.queue取数据要加锁么_秒杀抢购思路以及高并发下数据安全
  6. 迭代器修改元素_设计模式-迭代器模式
  7. linux java 错误日志_求大神解决啊啊 啊,看看这个怎么了,在LINUX运行完的错误日志...
  8. dubbo monitor mysql_dubbo-monitor监控台的部署
  9. C++特性:封装、继承、多态
  10. 为何要学习 Linux?