-
Word2016 样式保存
2016-11-30 16:51:15在一个word文件中新建一个样式点击样式管理按钮-->导入/道出弹出“管理器”对话框...局限,保存到Normal.dotm中的样式,只能适用于docx的word文件,而对于97-2003的word格式doc的文件,无法获得Normal.dotm中的格式。并- 在一个word文件中新建一个样式
- 点击样式管理按钮-->导入/道出
- 弹出“管理器”对话框,左边的样式使当前文件里的,右边的样式位于模板Normal.dotm中,
- 找到新建的样式,点击“复制”,这样样式就保存到Normal.dotm中。
- 这时,新建一个word文档(docx格式的),就能看到已经保存的样式。
- 局限,保存到Normal.dotm中的样式,只能适用于docx的word文件,而对于97-2003的word格式doc的文件,无法获得Normal.dotm中的格式。并且,即使把doc格式另存为docx格式,也不能获得Normal.dotm中的格式。
-
SAP ABAP 关于SMARTFORMS编辑文本出现WORD样式
2020-11-04 14:00:20在使用smartforms打开编辑文本的时候会出现word样式,这样就会出现无法拖拽字段和系统默认信息情况,导致部分功能无法使用 解决方案:通过SE38打开程序RSCPSETEDITOR 将SAPscript和智能表选项取消勾选 ...问题描述:SAP ABAP 关于SMARTFORMS编辑时文本默认使用WORD
在使用smartforms打开编辑文本的时候会出现word样式,这样就会出现无法拖拽字段和系统默认信息情况,导致部分功能无法使用
解决方案:通过SE38打开程序RSCPSETEDITOR
将SAPscript和智能表选项取消勾选
这时就可以正常使用系统本身的编辑器了
提示:这里填写该问题的具体解决方案:
例如:新建一个 Message 对象,并将读取到的数据存入 Message,然后 mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget();换成 mHandler.sendMessage()。 -
html表单导出为word文件(内含图片和CKeditor富文本框)
2018-06-06 17:20:20最近在做信息填报网站开发,需要将html页面中的表单信息导出为相应的word文档。但是由于我处理的表单中需要使用富文本框上传图片,使用一般的poi无法将富文本框...新建一个word文档,按照想要的格式编制文档样式,并...最近在做信息填报网站开发,需要将html页面中的表单信息导出为相应的word文档。但是由于我处理的表单中需要使用富文本框上传图片,使用一般的poi无法将富文本框中的图片导出,因此查看网上多方信息,最终使用freemarker模板加java帮助类完成了富文本框图片的导出。下面详细介绍一下具体步骤。
一、制作mht模板。新建一个word文档,按照想要的格式编制文档样式,并在需要导出信息的单元格添加占位符,例如想导出联系人信息,就在相应单元格添加${contactPerson}占位符。富文本框编辑的地方也使用占位符替换,例如企业简介信息,使用${enterpriseIntroduction}替换。
将整个word文档格式调整完成后,转存为单个网页(.mht)格式文件。右击新生成的mht文件,使用word应用打开,查看文件内容是否与刚刚编辑的word文档一致,如果不一致,进行微调后保存。使用文件编辑器(notepad++)打开mht文件则可以查看该网页文件的源码。
二、对刚刚生成的mht源码进行修改。首先对于普通的文本单元格导出,mht源码中已有相应的占位符${contactPerson},因此不需要进行任何修改,之后在java代码中直接替换为需要导出的字符串即可。
对于富文本框内容替换,mht源码中也已自动生成相应占位符${enterpriseIntroduciton}。但是,由于我们需要导出富文本框中的图片,因此我们还需要在mht文件中添加辅助占位符。由于mht中的图片采用了base64字符串编码,我们需要添加一个图片base64编码占位符${enterpriseIntroductionIMG},之后在java代码中将这个辅助占位符替换为相应图片的base64编码字符串,一般我会在mht文件中声明header.htm的上面添加该占位符。另外,还需要在mht文件的末尾添加资源引用的占位符${enterpriseIntroductionREF}。如果有多个富文本框,则每个富文本框都对应这三个占位符。
这样mht模板就已经做好了。保存后,我们就可以编写java代码对于模板文件中的占位符进行操作啦~!
三、java编码操作mht文件。我们可以专门建立一个dataUtil类,实现以下函数,便于在多个不同的表单中复用文本导出功能。首先我们需要读取已经设置好的mht模板,并将文件内容作为mht字符串输出。String readIn=readFile(realPath);
/*读取mht文件到字符串 * */ public static String readFile(String filepath) throws IOException{ StringBuffer buffer=new StringBuffer(""); BufferedReader br=null; try { br=new BufferedReader(new InputStreamReader(new FileInputStream(filepath),"UTF-8")); buffer=new StringBuffer(); while(br.ready()) { buffer.append((char)br.read()); } }catch(Exception e) { e.printStackTrace(); } finally { if(br!=null) { br.close(); } } return buffer.toString(); }
之后,替换mht字符串中设置的占位符。对于普通的文本占位符,使用replace函数,将占位符替换为相应表单中填写的字符串。readIn=readIn.replace("${contactPerson}", contact.getContactPerson());对于富文本框内容,读取前台传输过来的富文本编辑器html源码,截取完整的<img/>标签,将src属性中存储的图片转换为base64字符串。使用html源码替换占位符${enterpriseIntroduction},使用转换好的base64字符串替换${enterpriseIntroductionIMG},使用对应的格式替换文档末尾的${enterpriseIntroductionREF}。以上步骤通过函数addEditorImageEnterpriseIntroduction实现,该函数的第一个参数为富文本编辑器enterpriseIntroduction字段的html源码,第二个参数为读入的mht模板文件字符串,第三个参数为http请求request。readIn=addEditorImageEnterpriseIntroduction(enterpriseIntroduction,readIn,request);
/* * 截取富文本编辑器中完整的<img/>标签,并调用方法将其替换为可读取的base64字符串填回富文本编辑器中 * @editorContent 富文本编辑器字符串 * @template 模板字符串 */ public static String addEditorImageEnterpriseIntroduction(String editorContent, String template, HttpServletRequest request) { StringBuffer enterpriseIntroduction= new StringBuffer(); StringBuffer enterpriseIntroductionIMG=new StringBuffer(); StringBuffer enterpriseIntroductionREF=new StringBuffer(); if(!"".equals(editorContent)) { String[] stringSplit_img=editorContent.split("<img"); for(int i=0;i<editorContent.split("<img").length;i++) { if(i!=0) { String[] stringSplit_p=("<img"+stringSplit_img[i]).split("</p>"); for(int j=0;j<stringSplit_p.length;j++) { if(j!=0) { enterpriseIntroduction.append("</p>"+stringSplit_p[j]); }else { //此时stringSplit_p[j]已为完整的<img.../>标签字符串 //截取图片资源路径 for(String s:stringSplit_p[j].split(" ")) { if(s.startsWith("src=")) { s=s.replace("src=\"", ""); s=s.replace("\"", ""); //s=s.substring(request.getSession().getServletContext().getContextPath().length()); //拼出文件路径 String imagePath=request.getSession().getServletContext().getRealPath(s); //调用本类方法将其替换为base64String String imageStr=getImageStr(imagePath); enterpriseIntroductionIMG.append("\n" +"\n" +"------=_NextPart_01D3F735.15BC5DB0" +" " +"\n" +"Content-Location:file:" +"///C:/B13469F7/wlw.files/image" +i +j +0 +".jpg" +" " +"\n" +"Content-Transfer-Encoding: base64" +" " +"\n" +"Content-Type: image/jpeg" +" "+"\n"+"\n" +imageStr); enterpriseIntroduction.append("<!--[if gte vml 1]>" +"<v:shape id=3D" + "\"_x56fe_x7247_x0020_50\"" +"o:spid=3D\"_x0000_i1050\"" +"type=3D\"#_x0000_t75\"" +"style=3D\'width:415.2pt;" +"height:278.4pt;visibility:v=" +"isible;mso-wrap-style:square\'>" +"<v:imagedata src=3D\"wlw.files/image" +i +j +0 +".jpg\" o:title=3D\"\"/></v:shape>" +"<![endif]-->"); enterpriseIntroductionREF.append("\n" +"\n" +"<o:File HRef=3D\"image" +i +j +0 +".jpg\"/>"); } } } } }else { enterpriseIntroduction.append(stringSplit_img[i]); } } } template=template.replace("${enterpriseIntroduction}", enterpriseIntroduction.toString()); template=template.replace("${enterpriseIntroductionIMG}", enterpriseIntroductionIMG.toString()); template=template.replace("${enterpriseIntroductionREF}", enterpriseIntroductionREF.toString()); return template; }
其中,nextPart和Content-Location处的内容要和mht文件的文件头保持一致,并且三个StringBuffer中jpg的名称必须保持一致。另外,图片转换为base64字符串的方法如下。
/* * 将图片转存为base64字符串的方法 * @imagePath 文件存储路径 * * */ public static String getImageStr(String imagePath) { InputStream in=null; byte[] data=null; try { in =new FileInputStream(imagePath); data=new byte[in.available()]; in.read(data); in.close(); }catch(IOException e) { e.printStackTrace(); } BASE64Encoder encoder=new BASE64Encoder(); return encoder.encode(data); }
当完成所有占位符的替换后,需要将mht字符串进行转码。因为mht采用3Dus-ascii编码,该编码格式为10进制的ASCII码(非16进制),如果不进行处理,会导致最终导出的文件中有中文乱码,转换函数如下。
/* * 将字符串转换为10进制ASCII码 * * */ public static String string2ASCII(String s) { if(s==null||"".equals(s)) { return null; } char[] chars=s.toCharArray(); StringBuffer asciiString=new StringBuffer(); int n=0; for(char c:chars) { n=c; String a=""; if((19968<=n && n<40623)) { a="&#"+n+";"; }else { a=c+""; } asciiString.append(a); } return asciiString.toString(); }
四、将转换好的字符串作为文件输出。
try { os = response.getOutputStream(); response.reset(); response.setCharacterEncoding("utf-8"); response.setContentType("application/msword"); // word格式 response.setHeader("Content-Disposition", "attachment; filename=" + fileName); byte[] b = readIn.getBytes("UTF-8"); os.write(b); } catch (FileNotFoundException e) { e.printStackTrace(); }finally { if(os != null) { os.flush();os.close();} }
至此,我们完成了富文本编辑器中图片的文档导出。如果表单内有多个富文本框,可以设置多个占位符并分别替换。我在完成此功能的过程中,参考了博文http://blog.sina.com.cn/s/blog_14e8bca5a0102w9qm.html,获得了很大的帮助。根据自己的成功经验,重新梳理了富文本框图片的导出过程,在此与大家分享,希望各路大神批评指正~!
-
DotNetTextBox V6.0.10 商业版 下载 (已知最新)
2016-10-10 22:50:0611)导入Word功能升级到V2.0,修正导入后有些样式导入不完全的问题,同时优化了导入word文档时的性能! 12)更新了控件的部分语言资源文件。 13)更新控件可视化配置工具至1.0.3。 2008/10/27 Version 5.0.9 For ... -
全弹性布局+小程序+智能APP门户内核-逐浪CMS2 x3.9.4发布
2018-04-18 08:46:29■修复:因为特殊字符,导致word无法生成Bug ■按需扩展龙悦云收银模块 ■修复:中文无法输入Bug ■扩展:按需优化POS收银代码,增强稳定性,并可记录异常 ■扩展:支持打印份数,与USB打印机 ■按需扩展金赣物联网远程... -
针式PinPKM-V201506(免费无使用限制)
2015-10-18 11:25:51Windows7下无法拖动网页的一种替代解决方法:手工复制法 修改部分Bug:感谢用户hjbrave、proebc、看雪、绝望的笨蛋等对部分Bug的及时反馈 版本8.0.0更新时间:2009-09-29 新增多项创新功能: 剪贴板:资料整理助手... -
针式PinPKM-V201502(免费无使用限制)
2015-10-18 11:24:30Windows7下无法拖动网页的一种替代解决方法:手工复制法 修改部分Bug:感谢用户hjbrave、proebc、看雪、绝望的笨蛋等对部分Bug的及时反馈 版本8.0.0更新时间:2009-09-29 新增多项创新功能: 剪贴板:资料整理助手... -
PinPKM-V201525(官网发布的最后一个免费无使用限制版本)
2015-11-08 09:58:08Windows7下无法拖动网页的一种替代解决方法:手工复制法 修改部分Bug:感谢用户hjbrave、proebc、看雪、绝望的笨蛋等对部分Bug的及时反馈 版本8.0.0更新时间:2009-09-29 新增多项创新功能: 剪贴板:资料整理助手... -
Excel百宝箱9.0无限制破解版
2012-02-03 19:05:29【修复Excel】:当您的Excel某些功能无法使用时,或者无缘无故多出很多菜单、工具栏时,本工具可以瞬间恢复Excel到默认状态 【破解VBA密码】:将VBA编写的且有密码的程序进行破解,瞬间完成 【错误代码查询】:查询VBA... -
excel 工具箱
2012-01-22 15:04:34【生成2003样式菜单】:Excel 2007或者Excel 2010专用,可以产生2003样式的菜单来调用百宝箱(备用) 【多区域复制】:可以在选择多区域时进行复制 【按颜色筛选】:让Excel 2003也可以按背景色筛选数据,2007或者2010... -
Excel百宝箱
2012-10-27 17:09:21【修复Excel】:当您的Excel某些功能无法使用时,或者无缘无故多出很多菜单、工具栏时,本工具可以瞬间恢复Excel到默认状态 【破解VBA密码】:将VBA编写的且有密码的程序进行破解,瞬间完成 【错误代码查询】:查询VBA... -
EXCEL集成工具箱V9.0 多国语言最终原版(2003-2010通用)
2011-01-07 20:40:25【系统常用工具】 系统常用工具的快捷调用,例如:计算器、记事本、WORD、画图板。 【隐藏选项卡】 可以隐藏Excel2007及2010功能区的各选项卡(如:开始、插入、开发工具等)。 图 片 工 具 【选择本表图片】 将... -
EXCEL集成工具箱完整版 (简体/繁体/英文多国语言版) V7.0
2010-08-13 10:31:10【系统常用工具】 系统常用工具的快捷调用,例如:计算器、记事本、WORD、画图板。 【隐藏选项卡】 可以隐藏Excel2007及2010功能区的各选项卡(如:开始、插入、开发工具等)。 图 片 工 具 【选择本表图片】 将工作... -
EXCEL集成工具箱V6.0
2010-09-11 01:44:37【系统常用工具】 系统常用工具的快捷调用,例如:计算器、记事本、WORD、画图板。 【隐藏选项卡】 可以隐藏Excel2007及2010功能区的各选项卡(如:开始、插入、开发工具等)。 图 片 工 具 【选择本表图片】 将... -
EXCEL集成工具箱V8.0 多国语言版(2003-2010通用)
2010-09-11 12:08:58【系统常用工具】 系统常用工具的快捷调用,例如:计算器、记事本、WORD、画图板。 【隐藏选项卡】 可以隐藏Excel2007及2010功能区的各选项卡(如:开始、插入、开发工具等)。 图 片 工 具 【选择本表图片】 将... -
EXCEL集成工具箱V8.0完整增强版(精简)
2010-09-23 16:58:17【系统常用工具】 系统常用工具的快捷调用,例如:计算器、记事本、WORD、画图板。 【隐藏选项卡】 可以隐藏Excel2007及2010功能区的各选项卡(如:开始、插入、开发工具等)。 图 片 工 具 【选择本表图片】 将... -
会计理论考试题
2012-03-07 21:04:40C、在桌面上单击右键,再选择“新建”命令产生 D、在“编辑”菜单中选择“复制”命令产生 25.Windows98对话框的____C____是给用户提供输入信息的。 A、列表框 B、复选框 C、文本框 D、数值框 26.在Windows98中,如果... -
Excel百宝箱9.0无限制破解版.rar
2012-09-05 09:31:51【修复Excel】:当您的Excel某些功能无法使用时,或者无缘无故多出很多菜单、工具栏时,本工具可以瞬间恢复Excel到默认状态 【破解VBA密码】:将VBA编写的且有密码的程序进行破解,瞬间完成 【错误代码查询】:查询... -
Excel百宝箱8.0
2011-06-07 21:32:17【生成2003样式菜单】:Excel 2007或者Excel 2010专用,可以产生2003样式的菜单来调用百宝箱(备用) 【多区域复制】:可以在选择多区域时进行复制 【按颜色筛选】:让Excel 2003也可以按背景色筛选数据,2007或者2010... -
CuteEditor v 6.6 含KeyGen注册机
2010-05-31 00:37:45我们在vs2005里面新建个web site吧.然后把CuteEditor添加到工具面板.我们在工具面板里面右键选择choose item,在出来的对话框里面选择browser,找到CuteEditor.dll,一路确定就可以拉. 我们再添加个edit.asxp,把... -
易语言程序免安装版下载
2011-04-07 09:28:50修改高级表格支持库,解决在鼠标按下和抬起之间收到时钟周期事件的情况下,无法收到“被单击”事件的BUG。 3. 修改扩展界面支持库三,解决单击卷帘菜单后导致日期框不能弹出下拉窗口的BUG。 4. 修改XP风格支持库... -
EmEditor Pro(文本编辑器) V15.9.0 绿色中文版
2016-04-28 10:59:13后来看到一个插 件:txtBrowser,它可以高亮文本文件,而且可以像Word一样将标题大纲显示,这样很方便定位与阅读,这个插件还有很多其他功能,Vimer们 可以试试,而且是国人写的哦,中文帮助文档呢。呵呵。 也许是... -
易语言 茶凉专用模块
2010-05-04 12:26:36模块名称:茶凉专用模块 作者:茶凉 版本:2.0 本模块可以编程更简单,仅仅用核心支持库编写。 @备注: ...官方QQ群:92716369 ------------------------ -------------------------- ...------------------------------ ...
-
Windows系统管理
-
Employee_Tracker_ManageYourCompany:BCS家庭作业周12-源码
-
MxsDoc运行环境(Windows)
-
大尺寸薄壳物体表面的三维光学自动检测
-
美国证监会因可疑交易和社交媒体活动 暂停15家公司股票交易
-
前端开发中常用图片格式
-
敏捷个人:内容框架之执行力
-
洛谷P1957 口算练习题经典解法
-
PHP 一一 微信公众号开发(二次开发)
-
让界面更加清爽
-
DHCP 动态主机配置服务(在Linux环境下,配置单网段或跨网段提)
-
2021 年该学的 CSS 框架 Tailwind CSS 实战视频
-
很多朋友都是从此绝交的,故事很短,却说穿了人性!
-
2021年 系统分析师 系列课
-
从设计到策划——我的成长经历
-
PHP SOCKET编程
-
猫眼谐振腔在全外腔长氦氖激光器中的应用
-
LVS + Keepalived 实现 MySQL 负载均衡与高可用
-
响应式编程入门与实战(Reactor、WebFlux、R2DBC)
-
50个优秀的名片设计作品欣赏