精华内容
下载资源
问答
  • html word

    2013-08-29 14:52:43
    html 转 word 导出 word 方法一:html转word直接打开,并且可以分页,默认打开是页面视图 方法二:html转word 下载,可以分页,默认页面视图
  • html转word

    2020-12-29 11:29:09
    html转word思路:利用Freemarker读取html模板生成带数据的html文本,再通过docx4j实现html转word代码问题 思路:利用Freemarker读取html模板生成带数据的html文本,再通过docx4j实现html转word docx4j 相关依赖: <...

    思路:利用Freemarker读取html模板生成带数据的html文本,再通过docx4j实现html转word

    docx4j 相关依赖:
    	<dependency>
            <groupId>org.docx4j</groupId>
            <artifactId>docx4j-ImportXHTML</artifactId>
            <version>8.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.docx4j</groupId>
            <artifactId>xhtmlrenderer</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.docx4j</groupId>
            <artifactId>docx4j-JAXB-Internal</artifactId>
            <version>8.2.7</version>
        </dependency>
    freemarker依赖:
    	 <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.30</version>
        </dependency>
    

    代码

     /**
         * 将xml模板转换为后缀为doc文件,本质仍是属于xml
         * @param dataMap	需要填充到模板的数据
         * @param templetFilePath	模板文件路径
         * @param targetFilePath	目标文件保存路径
         * @throws IOException
         * @throws TemplateException
         */
        public static void xml2XmlDoc(Map<String,Object> dataMap, String templetFilePath, String targetFilePath) throws IOException, TemplateException {
            // 将模板文件路径拆分为文件夹路径和文件名称
            String tempLetDir = templetFilePath.substring(0,templetFilePath.lastIndexOf("/"));
            // 注意:templetFilePath.lastIndexOf("/")中,有的文件分隔符为:\ 要注意文件路径的分隔符
            String templetName = templetFilePath.substring(templetFilePath.lastIndexOf("/")+1);
            // 将目标文件保存路径拆分为文件夹路径和文件名称
            String targetDir = targetFilePath.substring(0,targetFilePath.lastIndexOf("/"));
            String targetName = targetFilePath.substring(targetFilePath.lastIndexOf("/")+1);
            Configuration configuration = new Configuration();
            configuration.setDefaultEncoding("UTF-8");
            // 如果目标文件目录不存在,则需要创建
            File file = new File(targetDir);
            if(!file.exists()){
                file.mkdirs();
            }
            // 加载模板数据(从文件路径中获取文件,其他方式,可百度查找)
            configuration.setDirectoryForTemplateLoading(new File(tempLetDir));
            // 获取模板实例
            Template template = configuration.getTemplate(templetName);
            File outFile = new File(targetDir + File.separator + targetName);
            //将模板和数据模型合并生成文件
            Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"UTF-8"));
            //生成文件
            template.process(dataMap, out);
            out.flush();
            out.close();
        }
    
    /**
         * html转 word文件
         * @param html html文本
         * @param docFile 输出文件
         * @return
         */
        public static File generate(String html,File docFile){
            try {
                WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
                XHTMLImporterImpl xHTMLImporter = new XHTMLImporterImpl(wordMLPackage);
    
                wordMLPackage.getMainDocumentPart().getContent().addAll(
                        xHTMLImporter.convert(new StringReader(html), null) );
                wordMLPackage.save(docFile);
            } catch (Exception e){
                throw new RuntimeException("Error converting file " + html, e);
            }
            return docFile;
        }
    

    问题

    先存在html转为word后,word中的很多html中的样式没有展示出来,比如img标签中的style没有绘制
    如果有大神做过这个,可以在下面留言,谢谢!!!

    展开全文
  • html 转Word

    2019-07-30 22:59:52
    package htmlToWord; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.poifs.filesystem.DirectoryEntry; imp....
    package htmlToWord;
    
    import java.io.ByteArrayInputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import org.apache.poi.poifs.filesystem.DirectoryEntry;
    import org.apache.poi.poifs.filesystem.DocumentEntry;
    import org.apache.poi.poifs.filesystem.POIFSFileSystem;
    
    public class HtmlToWordUtil {
    	public static void main(String[] args) throws IOException {
    		String str = " <!--[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]-->";
    		// 其中content为ueditor生成的内容
    		String h = " <html xmlns:v='urn:schemas-microsoft-com:vml'xmlns:o='urn:schemas-microsoft-com:office:office'xmlns:w='urn:schemas-microsoft-com:office:word'xmlns:m='http://schemas.microsoft.com/office/2004/12/omml'xmlns='http://www.w3.org/TR/REC-html40'  ";
    		String html = h + "<head>" + "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />" + str
    				+ "</head><body>111</body> </html>";
    		File file = new File("E/:dd.doc");
    		HtmlToWordUtil.createDoc(file, html);
    	}
    
    	public static File createDoc(File file, String html) {
    		ByteArrayInputStream bais = null;
    		FileOutputStream os = null;
    		POIFSFileSystem poifs = null;
    		try {
    			byte b[] = html.getBytes("utf-8");
    			bais = new ByteArrayInputStream(b);// 将字节数组包装到流中
    			poifs = new POIFSFileSystem();
    			DirectoryEntry directory = poifs.getRoot();
    			DocumentEntry documentEntry = directory.createDocument("WordDocument", bais);
    			os = new FileOutputStream(file);
    			poifs.writeFilesystem(os);
    		} catch (IOException e) {
    			e.printStackTrace();
    			return null;
    		} finally {
    			try {
    				bais.close();
    				os.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    				return null;
    			}
    		}
    		return file;
    	}
    }
    

     

    展开全文
  • Html转word

    2019-12-13 15:41:34
    https://www.cnblogs.com/yibinboy/articles/3676121.html private void button1_Click(object sender, EventArgs e) { string tpath = "resume.docx"; Document doc = new Docume...

    https://www.cnblogs.com/yibinboy/articles/3676121.html

    private void button1_Click(object sender, EventArgs e)
            {
                string tpath = "resume.docx";
                Document doc = new Document(tpath);

                DocumentBuilder mybuilder = new DocumentBuilder(doc);

                //通过书签的形式向word模板中插入内容;
                doc.Range.Bookmarks["resume_name"].Text = "我的简历";
                doc.Range.Bookmarks["resume_id"].Text = "123456789987654321";
                doc.Range.Bookmarks["update_time"].Text = "2022年12月22日";
                doc.Range.Bookmarks["apply_state"].Text = "我正在主动找工作,可快速到岗";

                //直接向word模板中插入html代码,生成的word会自动编译。
                mybuilder.MoveToCell(0, 0, 0, 0);
                mybuilder.InsertHtml("<font style='margin-top:20px;color:#bc4308;font-weight:bold;'>个人信息:</font><hr style='border-style:double;color:#bc4308;'/>");

                //四个数字对应的是:第一张表,第一行,第一列,第一个字符之后。
                mybuilder.MoveToCell(0, 1, 0, 0);
                mybuilder.InsertHtml("<table><tr><td style='width:63pt;'>姓名:</td><td colspan='2'>李婷</td></tr><tr><td style='width:63pt;'>性别:</td><td colspan='2'>女</td></tr><tr><td style='width:63pt;'>学历:</td><td colspan='2'>本科</td></tr><tr><td style='width:63pt;'>现居地:</td><td colspan='2'>郑州市</td></tr><tr><td style='width:63pt;'>出生日期:</td><td colspan='2'>2010年12月20日</td></tr><tr><td rowspan='3' style='vertical-align:top;'>联系方式:</td><td style='width:74pt;'>手机:</td><td style='width:173pt;'>15603900833</td></tr><tr><td style='width:74pt;'>家庭电话:</td><td style='width:173pt;'>0371-6027889</td></tr><tr><td style='width:74pt;'>办公室电话:</td><td style='width:173pt;'>0371-62014547</td></tr></table>");

                //插入图片
                Shape shape = new Shape(doc, ShapeType.Image);
                shape.ImageData.SetImage("ziji.jpg");
                shape.Width = 100;
                shape.Height = 110;
                shape.HorizontalAlignment = Aspose.Words.Drawing.HorizontalAlignment.Center;//图片向右对齐

                mybuilder.MoveToCell(0, 1, 1, 0);
                mybuilder.InsertNode(shape);

                //读文件
                string s;
                FileStream fs = new FileStream("1.html", FileMode.Open);

                StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);
                s = sr.ReadToEnd();
                sr.Close();
                fs.Close();

                mybuilder.MoveToCell(0, 2, 0, 0);
                mybuilder.InsertHtml(s);//直接把文件流插入到word模板中


                //插入页尾
                mybuilder.MoveToHeaderFooter(HeaderFooterType.FooterPrimary);

                Border topBorder = mybuilder.CellFormat.Borders[BorderType.Top];
                topBorder.LineStyle = LineStyle.Single;
                topBorder.LineWidth = 1;

                mybuilder.InsertCell();
                mybuilder.CellFormat.Width = 3 * 144;
                mybuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                mybuilder.Write("公司名称");

                mybuilder.InsertCell();
                mybuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
                mybuilder.Write("日期");

                mybuilder.EndRow();
                mybuilder.EndTable();

     

                //保存在test.doc文档中。
                doc.Save("test.doc", SaveFormat.Doc);
                MessageBox.Show("已经完成!");
            }

    使用该组件的流程是:先做一个word模板,模板里面包含表格。然后在代码中通过四个数值的定位在特定的表格里插入内容。

    分为三种方式向word模板中插入内容。

    一:通过在word模板中对应设置书签,重命名书签名称,在代码中根据书签名称,在特定位置插入特定内容;

    二:插入图片有两种方式:(1)

                //插入图片
                Shape shape = new Shape(doc, ShapeType.Image);
                shape.ImageData.SetImage("ziji.jpg");
                shape.Width = 100;
                shape.Height = 110;
                shape.HorizontalAlignment = Aspose.Words.Drawing.HorizontalAlignment.Center;//图片向右对齐

                mybuilder.MoveToCell(0, 1, 1, 0);
                mybuilder.InsertNode(shape);

    这种方式插入图片时,必须在word模板中做表格,定位表格位置,在特定位置插入图。

    最主要的是,图片必须在项目文件夹中。

    (2)通过插入一段html代码。本来,我们以为直接插入html代码,而项目中没有图片时,在断网的情况下,图片不能够正常显示。后来实践证明,采用直接插入html代码的方式插入图片的方式下:在断网的情况下,图片是可以正常显示的。

    但是,这种方式的问题是:原图有多大,生成的word中的图片就有多大。不管html页面的图片大小,而是原图的大小。

    三:定位之后,直接插入html代码。比如:

                mybuilder.MoveToCell(0, 1, 0, 0);
                mybuilder.InsertHtml("<table><tr><td style='width:63pt;'>姓名:</td><td colspan='2'>李婷</td></tr><tr><td style='width:63pt;'>性别:</td><td colspan='2'>女</td></tr><tr><td style='width:63pt;'>学历:</td><td colspan='2'>本科</td></tr><tr><td style='width:63pt;'>现居地:</td><td colspan='2'>郑州市</td></tr><tr><td style='width:63pt;'>出生日期:</td><td colspan='2'>2010年12月20日</td></tr><tr><td rowspan='3' style='vertical-align:top;'>联系方式:</td><td style='width:74pt;'>手机:</td><td style='width:173pt;'>15603900833</td></tr><tr><td style='width:74pt;'>家庭电话:</td><td style='width:173pt;'>0371-6027889</td></tr><tr><td style='width:74pt;'>办公室电话:</td><td style='width:173pt;'>0371-62014547</td></tr></table>");

    这种方式时,需要注意的是,很多html中的标签是不能够如愿地转换成对应的word内容的。通过实践发现:

    (1)hr的样式在word中是不管用的。注意是hr的样式,而不是hr。

    (2)br在word中不管用。

    (3)div的border,在word中是不显示的,但是它要占一个位置。

    (4)p在word中只能显示表示一行的效果,至于颜色或者大小之类的效果,必须用font标签才能够显示。

    (5)最重要的一点是:如果想直接把html转换成word,要注意宽度等的设置,此时,就需要一个能够同时在html和word中都管用的单位。因此,唯一的选择是pt——磅值。而且,根据我这几天的实践,在word文档中,选用五号字的情况下,一行有39个字。而对应的关系式是:五号=10.5磅=14px=0.37cm,因此,一行的宽度是410pt。设计html时,就直接用pt来控制宽度。可能刚开始时的宽度不是想象中的样子,这个时候不要急,把所有的设置都按照计算写对了,然后刷新页面,就会给你一个惊喜,完全会是自己要的效果的。

    还有一点很重要的要特别指出的是:我们在设计html页面时,习惯性地只要设置每一列的第一个单元格的宽度,这一列下面的单元格就会自动采用这个宽度。但是,在采用aspose.word生成word时,这种方式生成的word中的大文本内容会不能够完全显示,显示的效果是:文字好像浮在word页面之上一样,如果你把光标放在能看到的某一行的最后一个字符之前一个字符一个字符地往后移动光标,你就会发现文字藏在一个你根本无法找到的地方了。这个时候不要急,解决办法是,给每个单元格都加上宽度。而且,必须采用这种方式:<td style='width:74pt;'>,而不要为了偷懒写成这样的方式:<td width='74pt'>。后一种方式是不能解决上面的问题的。如果,你生成的word大文本不能够正常显示,就仔细检查你的html设计中,是不是少了一个<td style='width:74pt;'>,或者写的方式不对。

    (1)文件的读写操作:

    读操作: string s;
                FileStream fs = new FileStream("路径", FileMode.Open);
                StreamReader sr = new StreamReader(fs);
                s= sr.ReadToEnd();
                sr.Close();
                fs.Close();

    文件内容已经保存在s中了。

    写操作:FileStream fss=new FileStream("路径",FileMode.Create)
                StreamWriter sw=new StreamWriter(fss);
                sw.Write("内容");
                sw.Close();
                fss.Close();

    StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);

    在这里,我本来选择是的是UTF8,后来证明UTF8读出来的就是乱码,因此,采用default的参数。

    (2)关于table表格的合并拆分之类的html设计:我以前没有写过复杂的table,遇到复杂一点的就用多个table拆分了。终于,趁着这次工作的机会,把table中的一些写法也弄懂了。嘿嘿。其实,超级简单。我就是大懒汉啊。哈哈。

                             <table>
                                    <tr>
                                        <td style='width:63pt;'>姓名:</td>
                                        <td colspan='2'>李婷</td>
                                    </tr>
                                    <tr>
                                        <td style='width:63pt;'>性别:</td>
                                        <td colspan='2'>女</td>
                                    </tr>
                                    <tr>
                                        <td style='width:63pt;'>学历:</td>
                                        <td colspan='2'>本科</td>
                                    </tr>
                                    <tr>
                                        <td style='width:63pt;'>现居地:</td>
                                        <td colspan='2'>郑州市</td>
                                    </tr>
                                    <tr>
                                        <td style='width:63pt;'>出生日期:</td>
                                        <td colspan='2'>2010年12月20日</td>
                                    </tr>
                                    <tr>
                                        <td rowspan='3' style='vertical-align:top;'>联系方式:</td>
                                        <td style='width:74pt;'>手机:</td>
                                        <td style='width:173pt;'>15603900833</td>
                                    </tr>
                                    <tr>
                                        <td style='width:74pt;'>家庭电话:</td>
                                        <td style='width:173pt;'>0371-6027889</td>
                                    </tr>
                                    <tr>
                                        <td style='width:74pt;'>办公室电话:</td>
                                        <td style='width:173pt;'>0371-62014547</td>
                                    </tr>
                                </table>

    colspan='2';是合并列;

    rowspan='3';是合并行;

    style='vertical-align:top;'   这个是让文本内容从单元格的最上面开始显示;

     

    展开全文
  • HTML Word

    千次阅读 2017-11-16 17:00:21
    using Microsoft.Office.Interop.Word; //注意要先引用 public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } public void educeDoc...
    前台
    [csharp] view plain copy print?
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>  
      
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
    <html xmlns="http://www.w3.org/1999/xhtml">  
    <head runat="server">  
        <title>无标题页</title>  
    </head>  
    <body>  
        <form id="form1" runat="server">  
        <div>  
            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />  
        </div>  
        </form>  
    </body>  
    </html>  


    后台

    using System;  
    using System.Collections;  
    using System.Configuration;  
    using System.Data;  
    using System.Linq;  
    using System.Web;  
    using System.Web.Security;  
    using System.Web.UI;  
    using System.Web.UI.HtmlControls;  
    using System.Web.UI.WebControls;  
    using System.Web.UI.WebControls.WebParts;  
    using System.Xml.Linq;  
    using Microsoft.Office.Interop.Word;    //注意要先引用  
      
    public partial class _Default : System.Web.UI.Page  
    {  
        protected void Page_Load(object sender, EventArgs e)  
        {  
      
        }  
      
        public void educeDoc(string FileName)  
        {  
            //清除反冲区的内容  
            Response.Clear();  
            //设置输出流的http字符集  
            Response.Charset = "gb2312";  
            //将一个HTTP头添加到输出流  
            Response.AddHeader("content-disposition", "attachment;filename=" + FileName);  
            //设置输出的HTTP MIME类型  
            Response.ContentType = "application/vnd.doc";  
      
            System.Text.StringBuilder sb = new System.Text.StringBuilder();  
            sb.Append(@"<table border='1' >  
    <tr>  
    <td>123</td>  
    <td>456</td></tr>  
    <tr>  
    <td>678</td>  
    <td>890</td></tr>  
    <tr>  
    <td>222</td>  
    <td><img src='http://www.iteye.com/images/user-logo.gif?1324994303' alt='ourteam的博客'></td></tr>  
    </table>");  
      
            //把字符数组写入HTTP响应输出流  
            Response.Write(sb.ToString());  
            //发送完,关闭  
            Response.End();  
        }  
      
        protected void Button1_Click(object sender, EventArgs e)  
        {  
            educeDoc("1.doc");//最终输出的文件名就是 "1.doc"  
        }  
    }  
    

    转载自:http://blog.csdn.net/yenange/article/details/8858817
    展开全文
  • 使用忠告使用该方式进行xhtml到word的转换, 简单转换是可以, 但是可能并没有想象中那么满意, 转换出来的word格式并不完美, 比如目录和标题都会丢失, 标题显示...加上word与html互转(2) -- html转word, 虽然word与ht...
  • c# HTML转word源码

    2018-08-13 11:32:23
    HTML转word ,基于.net 实现html转word,HTML转word ,基于.net 实现html转word,
  • 主要介绍了C#实现HTML转WORD及WORD转PDF的方法,涉及C#实现HTML、WORD及PDF等文件格式转换的相关技巧,需要的朋友可以参考下
  • HTML转WORD WORD转PDF

    2009-08-19 16:44:06
    HTML转WORD WORD转PDF 自己编写的 正在使用
  • html转word.zip

    2019-10-31 15:07:04
    html转word所需要的JS插件
  • HTML转Word.zip

    2019-06-11 22:46:13
    c# html Word 免费实用!简单易用,强烈推荐。
  • php如何实现html转换word?2020-07-11 12:43:38php实现html转换word的方法:1、通过mnt介质,生成word,代码为【composer require cshaptx4869/html2word】;2、html文件直接写入word,且将图片转为base64格式。php...
  • 纯正html转word.rar

    2019-08-15 09:03:46
    项目包括所有jar包,完美支持html转word,并解决图片断网不能访问的问题。调用HtmlToWord类测试即可,注意修改调用文件的路径,因里面用到jacob,需要将jacob.dll拷贝到项目所在jre\bin目录下面
  • html转word将web/html内容导出为world文档,再java中有很多解决方案,比如使用Jacob、Apache POI、Java2Word、iText等各种方式,以及使用freemarker这样的模板引擎这样的方式。php中也有一些相应的方法,但在python...
  • 用jacob html 转word

    2017-06-29 17:33:59
    整个代码只需要一个jacob的jar包就可以运行了。 当然,在下载的文件里面还有个调用系统库的dll文件需要放置在jre的bin目录下: 示例:D:\Java\jdk1.7.0_67\jre\bin\jacob-...这样代码就可以实现word转pdf,html 转word
  • HTML转WORD,WORD转PDF(C#)

    热门讨论 2013-03-07 15:14:54
    具体看文章:http://www.cnblogs.com/joeblackzqq/archive/2013/03/07/2948114.html,实现html转word, word转PDF。我只是参考这个代码具体建了个工程实现了下,至于具体功能未作优化,请需要的朋友自己完善
  • php实现html转换word的方法:1、通过mnt介质,生成word,代码为【composer require cshaptx4869/html2word】;2、html文件直接写入word,且将图片转为base64格式。php实现html转换word的方法:1、通过mnt这个介质,...
  • Html转wordDemo和相关jar包

    热门讨论 2017-11-15 22:48:56
    Html转wordDemo和相关jar包。 解决java中html转word文档,转成功后的word文档在断网情况下无法显示图片问题。 搞了好多天,网上的帖子达不到效果。于是自己搞了个办法,亲测可用。
  • html转word文档

    2019-03-26 16:59:00
    html转word文档 package cn.com.szhtkj.util; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,237
精华内容 2,094
关键字:

html转word