您的位置:首页 > Web前端 > JavaScript

jsp 页面生成word文档

2017-09-30 09:55 519 查看
       现场需要一个内容自动生成word文档,并自动上传到ftp的功能。

       功能需求:一个维护程序,只需要填写时间和文档的基础信息,根据时间去取其他程序的数据,进行归总,并按照现场给的模板进行生成word文档。

        解决方案:1.将现场提供的word的模板另存为html文件,生成之后除了html文件外,还有一些其他xml等文件,在html的head标签会引用这些文件,将其全部删除。

   2.将html里代码复制到jsp文件内,jsp代码再添加两行代码:

<%
response.setHeader("Content-disposition","attachment;filename=text.doc");
%>以及head便签内添加:
<!--[if gte mso 9]><xml><w:WordDocument><w:View>Print</w:View><w:TrackMoves>false</w:TrackMoves><w:TrackFormatting/><w:ValidateAgainstSchemas/><w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid><w:IgnoreMixedContent>false</w:IgnoreMixedContent><w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText><w:DoNotPromoteQF/><w:LidThemeOther>EN-US</w:LidThemeOther><w:LidThemeAsian>ZH-CN</w:LidThemeAsian><w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript><w:Compatibility><w:BreakWrappedTables/><w:SnapToGridInCell/><w:WrapTextWithPunct/><w:UseAsianBreakRules/><w:DontGrowAutofit/><w:SplitPgBreakAndParaMark/><w:DontVertAlignCellWithSp/><w:DontBreakConstrainedForcedTables/><w:DontVertAlignInTxbx/><w:Word11KerningPairs/><w:CachedColBalance/><w:UseFELayout/></w:Compatibility><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><m:mathPr><m:mathFont m:val="Cambria Math"/><m:brkBin m:val="before"/><m:brkBinSub m:val="--"/><m:smallFrac m:val="off"/><m:dispDef/><m:lMargin m:val="0"/> <m:rMargin m:val="0"/><m:defJc m:val="centerGroup"/><m:wrapIndent m:val="1440"/><m:intLim m:val="subSup"/><m:naryLim m:val="undOvr"/></m:mathPr></w:WordDocument></xml><![endif]-->

这行代码用处:生成的word文件,打开模式默认设为页面视图模式,因为生成的word文档为web版本,如果不加这行代码,默认打开为web版视图模式。
                           3.后台处理代码:

                           String url =""; //word模板jsp文件存在的路径地址
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url); //获取模板的数据
InputStream instream = null;
FTP ftp = null;
try{
HttpResponse resp = client.execute(get);
HttpEntity entity = resp.getEntity();
instream = entity.getContent();

String newDocId = ""; //主键值
ftp = FTP.getInstanceByDocId(db, newDocId); //创建ftp
if ((ftp == null) || (!ftp.createConnection())) {
throw new LiemsException("保存失败,请检查数据库和FTP连接!");
}
ftp.upload(newDocId, instream); //上传
} catch (ClientProtocolException e)
{
Log.error(e);
}
catch (IOException e)
{
Log.error(e);
}
catch (Exception e)
{
Log.error(e);
db.rollback();
}
finally
{
if (instream != null) {
try
{
instream.close();
}
catch (IOException e)
{
Log.error(e);
}
}
get.releaseConnection();
client.getConnectionManager().shutdown();
if (ftp != null) {
ftp.closeConnection();
}
}ps:特别注意一下,生成的word编辑之后,不能直接保存,需要另存为word模板,因为生成的格式还是web的,需要自另存为转换为word格式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: