`

前台传字符串导出word

阅读更多
package com.yunfengtech.common;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;

import org.apache.log4j.Logger;
import org.apache.poi.poifs.filesystem.DirectoryEntry;
import org.apache.poi.poifs.filesystem.DocumentEntry;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;

import com.lowagie.text.pdf.BaseFont;

public class HtmlToWord {

	private static Logger logger = Logger.getLogger("default");

	public static boolean writeWordFile(String inputFile, String outputFile)
			throws Exception {
		boolean w = false;
		outputFile = getUrl();
		logger.error("export word file dir is :" + outputFile);
		if (!"".equals(outputFile)) {
			// 检查目录是否存在
			File fileDir = new File(outputFile);
			logger.error("export word file dir is exist :" + fileDir.exists());
			if (fileDir.exists()) {
				// 生成临时文件名称
				String fileName = "report.doc";
				// IE兼容问题
				inputFile = inputFile.replaceAll("colSpan", "colspan")
						.replaceAll("rowSpan", "rowspan")
						.replaceAll("cellSpacing", "cellspacing")
						.replaceAll("\"", "\'");
				ITextRenderer renderer = new ITextRenderer();
				ITextFontResolver fontResolver = renderer.getFontResolver();
				try{
					if(isWindowsSystem()){
						fontResolver.addFont("C:/Windows/fonts/simsun.ttc",	BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
					}else{
						fontResolver.addFont("/usr/share/fonts/chinese/TrueType/simsun.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
					}
				}catch(Exception e1){
					e1.printStackTrace();
					logger.error("export word addFont exception :"+e1);
				}finally{
					
				}

				StringBuffer html = new StringBuffer();
				html.append("<!DOCTYPE html PUBLIC \'-//W3C//DTD XHTML 1.0 Transitional//EN\' \'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\'>");
				html.append("<html xmlns=\'http://www.w3.org/1999/xhtml\'>")
						.append("<head>")
						.append("<meta http-equiv=\'Content-Type\' content=\'text/html; charset=UTF-8\' />")
						.append("<style type=\'text/css\' mce_bogus=\'1\'>body {font-family: SimSun;} .reportTitle{font-size:20pt;font-weight:bold;}</style>")
						.append("</head>").append("<body>")
						.append(inputFile);
				html.append("</body></html>");

				String content = html.toString();
				ByteArrayInputStream bais = null;
				POIFSFileSystem poifs = null;
				FileOutputStream ostream = null;
				try{
					byte b[] = content.getBytes();
					bais = new ByteArrayInputStream(b);
					poifs = new POIFSFileSystem();
					DirectoryEntry directory = poifs.getRoot();
					@SuppressWarnings("unused")
					DocumentEntry documentEntry = directory.createDocument("WordDocument", bais);
					ostream = new FileOutputStream(outputFile + fileName);
					poifs.writeFilesystem(ostream);
				}catch(Exception e){
					e.printStackTrace();
					logger.error("export word exception :"+e);
				}finally{
					if(bais != null){
						bais.close();
					}
					if(ostream != null){
						ostream.close();
					}
				}
			}
		}
		
		return w;
	}
	
	public static String getUrl() {
		String path = HtmlToWord.class.getProtectionDomain().getCodeSource()
				.getLocation().getPath();
		int index = path.lastIndexOf("WEB-INF/lib");
		if (index == -1) {
			index = path.lastIndexOf("WEB-INF/classes");
		}

		String realPath = path.substring(0, index);
		realPath = realPath.replace("%20", " ");
		return realPath;
	}
	
	public static Boolean isWindowsSystem(){
		Boolean b = false ;
		String os = System.getProperties().getProperty("os.name");
		logger.error("the os is :"+os);
		if(os != null && os.toLowerCase().startsWith("windows")){
			b = true;
		}
		return b;
	}

}
分享到:
评论

相关推荐

    桃源网络硬盘.Net v5.4 for .net 2.0/3.0/3.5

    主要功能: ... 2.在自己的空间中上传多文件及大文件进行在线查看管理,可建多级目录存放。 3.文件目录多级共享,可共享整个用户空间。 4.树状显示系统功能和目录结构,操作方便。...数据库连接字符串在web.config文件中。

    桃源网络硬盘.Net5.5

    数据库连接字符串在web.config文件中。  开发商:深圳市盛世桃源网络科技有限公司  官方网站:http://www.mytaoyuan.com/ 技术支持论坛:http://bbs.mytaoyuan.com 产品文档中心:...

    桃源网络硬盘.Net v5.2

    主要功能: 1.... 2.在自己的空间中上传多文件及大文件进行在线查看管理,可建多级目录存放。 3.文件目录多级共享,可共享整个用户空间。 4.... 数据库连接字符串在web.config文件中。

    华报智能报表工具

     报表文档和报表数据可以通过URL(或本地文件路径)请求从Web服务器(或本地操作系统)的返回结果中加载,可以从内存中的XML字符串加载,也可以通过编程(调用API编程接口)动态生成。 ReportAll控件/插件不依赖于...

    文章管理系统

    完善 字符串长度截取函数 5.改进前台底部友情链接间隔符 6.纠正留言和评论提交成功后会弹出验证码的BUG 7.纠正会员注册计算是否允许再次注册时出现页面错误BUG 8.纠正其他几个小细节 2012年04月17日 1.后台...

    vc++ 开发实例源码包

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    桃源网络硬盘.Net v4.3

    主要功能:1....2.在自己的空间中上传多文件及大文件进行在线查看管理,可建多级目录存放。3.文件目录多级共享,可共享整个用户空间。4.树状显示系统功能和目录结构,操作方便。...数据库连接字符串在web.config文件中。

    vc++ 应用源码包_1

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_2

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_6

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_5

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_3

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    公司年会大屏幕抽奖

    更新:过滤一些字符串的空格,减少误操作的可能性 2015.12.20 更新:更新摇一摇提示信息,避免产生不必要的误会 2015.12.19 新增:增加1个自定义背景图的主题 新增:可以自定义上传logo图片 更新:微信上墙后台刷新待...

    asp.net知识库

    .NET 2.0中的字符串比较 小试ASP.NET 2.0的兼容性 为 asp.net 2.0 的菜单控件增加 target 属性 ASP.NET 2.0 的内部变化 常见的 ASP.NET 2.0 转换问题和解决方案 Asp.Net2.0无刷新客户端回调 体验.net 2.0 的优雅(1...

Global site tag (gtag.js) - Google Analytics