如何将html转为word(怎样把html文件转换成word)

做开发的都知道,在项目开发中要操作导出word都挺麻烦的,大家都尽量选择使用开源的工具。

小编简单分析了下,大家现在整理三种方法供大家参考:

一、使用jquery.wordexport.js

首先引用三个文件:jquery.wordexport.js依赖于jquery以及 FileSaver.js

调用方法:

我是要导出word的html内容

是不是超级简单。。。。。

二、使用DotNetCore.NPOI, 直接操作生成 word

首先在项目中添加nuget DotNetCore.NPOI

提供一个封装的类:NpoiWordHelper.cs

using NPOI.OpenXmlFormats.Wordprocessing;

using NPOI.XWPF.UserModel;

using System;

using System.IO;

namespace TianFeng.FrameworkCore

{

///

/// NPOI操作Word

///

public class NpoiWordHelper

{

///

/// 创建文档

///

///

public static void ExportDocument(DocumentSetting setting)

{

XWPFDocument docx = new XWPFDocument();

MemoryStream ms = new MemoryStream();

//设置文档

docx.Document.body.sectPr = new CT_SectPr();

CT_SectPr setPr = docx.Document.body.sectPr;

//获取页面大小

Tuplesize = GetPaperSize(setting.PaperType);

setPr.pgSz.w = (ulong)size.Item1;

setPr.pgSz.h = (ulong)size.Item2;

//创建一个段落

CT_P p = docx.Document.body.AddNewP();

//段落水平居中

p.AddNewPPr().AddNewJc().val = ST_Jc.center;

XWPFParagraph gp = new XWPFParagraph(p, docx);

XWPFRun gr = gp.CreateRun();

//创建标题

if (!string.IsNullOrEmpty(setting.TitleSetting.Title))

{

gr.GetCTR().AddNewRPr().AddNewRFonts().ascii = setting.TitleSetting.FontName;

gr.GetCTR().AddNewRPr().AddNewRFonts().eastAsia = setting.TitleSetting.FontName;

gr.GetCTR().AddNewRPr().AddNewRFonts().hint = ST_Hint.eastAsia;

gr.GetCTR().AddNewRPr().AddNewSz().val = (ulong)
   setting.TitleSetting.FontSize;//2号字体

gr.GetCTR().AddNewRPr().AddNewSzCs().val = (ulong)setting.TitleSetting.FontSize;

gr.GetCTR().AddNewRPr().AddNewB().val =
   setting.TitleSetting.HasBold; //加粗

gr.GetCTR().AddNewRPr().AddNewColor().val = "black";//字体颜色

gr.SetText(setting.TitleSetting.Title);

}

//创建文档主要内容

if (!string.IsNullOrEmpty(setting.MainContentSetting.MainContent))

{

p = docx.Document.body.AddNewP();

p.AddNewPPr().AddNewJc().val = ST_Jc.both;

gp = new XWPFParagraph(p, docx)

{

IndentationFirstLine = 2

};

//单倍为默认值(240)不需设置,1.5倍=240X1.5=360,2倍=240X2=480

p.AddNewPPr().AddNewSpacing().line = "400";//固定20磅

p.AddNewPPr().AddNewSpacing().lineRule = ST_LineSpacingRule.exact;

gr = gp.CreateRun();

CT_RPr rpr = gr.GetCTR().AddNewRPr();

CT_Fonts rfonts = rpr.AddNewRFonts();

rfonts.ascii = setting.MainContentSetting.FontName;

rfonts.eastAsia = setting.MainContentSetting.FontName;

rpr.AddNewSz().val = (ulong)
   setting.MainContentSetting.FontSize;//5号字体-21

rpr.AddNewSzCs().val = (ulong)setting.MainContentSetting.FontSize;

rpr.AddNewB().val = setting.MainContentSetting.HasBold;

gr.SetText(setting.MainContentSetting.MainContent);

//// 创建表格对象列数写死了,可根据自己需要改进或者自己想想解决方案

//XWPFTable table = docx.CreateTable(list.Count(), 4);

//for (int i = 0; i < list.Count(); i )

//{

// table.GetRow(i).GetCell(0).SetText(list[i].Id.ToString());

// table.GetRow(i).GetCell(1).SetText(list[i].Title);

// table.GetRow(i).GetCell(2).SetText(list[i].Content);

// table.GetRow(i).GetCell(3).SetText(list[i].AddTime);

//}

}

//开始写入

docx.Write(ms);

using (FileStream fs = new FileStream(setting.SavePath, FileMode.Create, FileAccess.Write))

{

byte[] data = ms.ToArray();

fs.Write(data, 0, data.Length);

fs.Flush();

}

ms.Close();

}

///

/// 设置文档

///

public class DocumentSetting

{

///

/// 文档类型,默认为A4纵向

///

public PaperType PaperType { get; set; } = PaperType.A4_V;

///

/// 保存地址,包含文件名

///

public string SavePath { get; set; }

///

/// 文档标题相关

///

public ContentItemSetting TitleSetting { get; set; }

///

/// 文档主要内容

///

public ContentItemSetting MainContentSetting { get; set; }

}

///

/// 文档内容相关

///

public class ContentItemSetting

{

///

/// 标题

///

public string Title { get; set; }

///

/// 主要内容

///

public string MainContent { get; set; }

///

/// 使用字体

///

public string FontName { get; set; } = "宋体";

///

/// 字体大小,默认2号字体

///

public int FontSize { get; set; } = 44;

///

/// 是否加粗,默认不加粗

///

public bool HasBold { get; set; } = false;

}

///

/// 纸张类型

///

public enum PaperType

{

///

/// A4纵向

///

A4_V,

///

/// A4横向

///

A4_H,

///

/// A5纵向

///

A5_V,

///

/// A5横向

///

A5_H,

///

/// A6纵向

///

A6_V,

///

/// A6横向

///

A6_H

}

#region 私有方法

///

/// 获取纸张大小,单位:Twip

///换算关系:1英寸=1440缇 1厘米=567缇 1磅=20缇 1像素=15缇

///

///

///

private static TupleGetPaperSize(PaperType type)

{

Tupleres = null;

switch (type)

{

case PaperType.A4_V:

res = new Tuple(11906, 16838);

break;

case PaperType.A4_H:

res = new Tuple(16838, 11906);

break;

case PaperType.A5_V:

res = new Tuple(8390, 11906);

break;

case PaperType.A5_H:

res = new Tuple(11906, 8390);

break;

case PaperType.A6_V:

res = new Tuple(5953, 8390);

break;

case PaperType.A6_H:

res = new Tuple(8390, 5953);

break;

}

return res;

}

#endregion

}

}

调用方法:

NpoiWordHelper.ExportDocument(

new DocumentSetting

{

PaperType = PaperType.A4_V,

SavePath="word标题.docx",

TitleSetting=new ContentItemSetting

{

Title="我的word标题",

FontSize=44,

HasBold=true,

FontName="宋体"

},

MainContentSetting = new ContentItemSetting

{

MainContent= "这里是word内容这里是word内容这里是word内容这里是word内容这里是word内容",

FontSize = 14,

FontName = "宋体"

}

}

);

是不是一样很简单,但有个遗憾,这个封装的类不支持插入表格、图片,需要的还请大家自行扩展。

三、使用aspose.words

这个是第三方的,未开源,要有license不然会有水印,巧的是在nuget上发一个破解的。。大家偷偷用就好。

调用方法:

Aspose.Words.Document doc = new Aspose.Words.Document();

Aspose.Words.DocumentBuilder builder = new Aspose.Words.DocumentBuilder(doc);

builder.InsertHtml("html内容");

doc.Save("word.docx", Aspose.Words.SaveFormat.Docx);

这个使用应该来说是最后简单,强烈推荐,Aspose.Words同时可以进行转pdf,等文件的互转,功能非常强大。其他功能,大家自行研究吧。

(0)

相关推荐

  • 如何pdf转word(把pdf文件转换成word)

    PDF转word有什么方法可以实现呢?大家在办公的过程中最容易遇到需要转换文件格式的需求,如果不知道文件格式转换的方法,会非常影响我们办公的效率的,就比如最常遇见的PDF如何转word,相信大家经常遇 ...

  • 如何从PDF文件转换成WORD文档

    大家是不是在网上找关于自己感兴趣的,或者工作方面的资料的时候,碰到一些关于PDF格式的文件,有些的好东西,还想把他复制下来,但是很多PDF格式的文件,但是很气人啊,下载下的PDF格式的文件里的文字或者 ...

  • 怎样把xps文件转换成word文档

    XPS是XML Paper Specification(XML文件说明书)的通称,是一种电子器件文件格式,它是微软企业开发设计的一种文本文档保存与查看的标准.那麼日常应用中如何把xps文件转换成wor ...

  • 如何使用"另存为"将WPS文件转换成Word

    通常在公司办公电脑上,我们可能会安装有多种不同的办公处理软件,例如:Microsoft Word、WPS等多种办公软件,我们可能随时将WPS文件转换成Word。 ①单击WPS左上方的“WPS文字”按钮 ...

  • 教你怎么把pdf文件转换成word文档 轻松快速

    话说,最近领导又有新要求了,要小编把一个产品的说明书PDF文件转换成Word 文档,然后可以保证编辑里面的内容和文字。小编在网上找了一些软件,结合自己的一些使用经验,把转换方法和软件介绍给大家。 PD ...

  • 怎么把pdf文件转换成word?

    迅捷pdf转换成word转换器是一款功能强大的文件转换工具,它采用多层次转换技术,能够对各文件进行深度转换以达到最满意的转换效果,特别是在pdf转word技术上,能充分实现pdf文件的完美转换,不会出 ...

  • CAJ文件转换成Word文件的方法

    Word是我们最常用的办公软件之一,我们常常将一些下载下来的其他格式的文档转成Word格式方便我们查阅跟编辑.最近,有网友从网上下载了一个CAJ格式的文件,这个格式不像Word格式或者PDF那么为人所 ...

  • PPT文件转换成Word文档的方法

    如果我们想要打印我们的PPT幻灯片,我们直击选择打印的话就会发现打印效果不是很好,那我们应该怎么办呢?很简单,把PPT文件转换成Word文档就可以了具体如下:1. 方法一.我们可以选择使用专用的转换软 ...

  • 如何将扫描文件转换成Word?

    做文职的朋友都应该深有感触,录入资料是一件很烦恼而且很郁闷的事情,每次有一大堆的资料要录入到Word中,还没开始可能就会让你心情憔悴了.不过现在好了,目前网络上有许多"OCR文字识别软件&q ...

  • 怎么将caj文件转换成word文档

    怎么将caj文件转换成word文档?caj格式的文件是一种比较特殊的文档格式,使用caj文件时通常会需要将caj文件转换成word文档.那如何将caj文件转换成word文档呢?下面我们就一起来看一下吧 ...