做开发的人都知道在项目开发中操作word导出很麻烦,大家都想尽可能使用开源工具。
小编简单分析了一下,大家现在整理三种方法以供参考。
首先,使用jquery.wordex
首先引用三个文件。jquery.wordex依赖于jquery和FileSaver.js
脚本src=';/脚本
脚本src=';/脚本
script src=' https://github . com/markswindoll/jquery-word-export/blob/master/jquery . wordex
方法调用:
div id=' content '要将word导出到的html内容/div
button onclick=' exportword ' word/button导出
脚本(脚本)
Function exportword(){
$('#content ')。word export(“word标题”);
}
/脚本
超级简单吗?
第二,使用Do通过直接操作生成word
首先,将nuget Do添加到项目中
提供封装的类:n
Using NPOI。o;
Using NPOI。XWPF . UserModel
Using System
Using Sy
namespace Tian feng . framework core
{
///摘要
///NPOI操作Word
////摘要
Public class NpoiWordHelper
{
///摘要
///创建文档
////摘要
///param name='setting'/param
Public static void export document(设置文档设置)
{
xwpfdocumentdocx=new xwpfdocument();
memory stream ms=new memory stream();
//设置文档
docx . document . body . Sect pr=newct _ sec TPR();
CT _ Sect pr set pr=docx . document . body . Sect pr;
//获取页面大小
Tupleint,int size=get papersize);
=(ulong;
=(ulong;
//创建段落
CT _ p p=docx . document . body . add newp();
//段落水平居中
P.addnewppr()。addnewjc()。val=ST _ jc.center
xwpfparagraph gp=new xwpfparagraph(p,docx);
XWPFRun gr=gp。create run();
//创建标题
If(!))
{
Gr.getctr()。addnewrpr()。addnewrfonts()。ascii=;
Gr.getctr()。addnewrpr()。addnewrfonts()。EASTASIA=;
Gr.getctr()。addnewrpr()。addnewrfonts()。hint=ST _ hint.eastasia
Gr.getctr()。addnewrpr()。add newsz()。val=(ulong;//2字体
Gr.getctr()。addnewrpr()。addnewszcs()。val=(ulong;
Gr.GetC
TR().AddNewRPr().AddNewB().val = ; //加粗gr.GetCTR().AddNewRPr().AddNewColor().val = "black";//字体颜色
gr.SetText);
}
//创建文档主要内容
if (!))
{
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_LineS;
gr = gp.CreateRun();
CT_RPr rpr = gr.GetCTR().AddNewRPr();
CT_Fonts rfonts = r();
r = ;
r = ;
r().val = (ulong;//5号字体-21
rCs().val = (ulong;
r().val = ;
gr.SetText);
//// 创建表格对象列数写死了,可根据自己需要改进或者自己想想解决方案
//XWPFTable table = docx.CreateTable(), 4);
//for (int i = 0; i < li(); i++)
//{
// (i).GetCell(0).SetText(list[i].Id.ToString());
// (i).GetCell(1).SetText(list[i].Title);
// (i).GetCell(2).SetText(list[i].Content);
// (i).GetCell(3).SetText(list[i].AddTime);
//}
}
//开始写入
docx.Write(ms);
using (FileStream fs = new FileStream, FileMode.Create, FileAcce))
{
byte[] data = ms.ToArray();
(data, 0, da);
();
}
ms.Close();
}
/// <summary>
/// 设置文档
/// </summary>
public class DocumentSetting
{
/// <summary>
/// 文档类型,默认为A4纵向
/// </summary>
public PaperType PaperType { get; set; } = Pa;
/// <summary>
/// 保存地址,包含文件名
/// </summary>
public string SavePath { get; set; }
/// <summary>
/// 文档标题相关
/// </summary>
public ContentItemSetting TitleSetting { get; set; }
/// <summary>
/// 文档主要内容
/// </summary>
public ContentItemSetting MainContentSetting { get; set; }
}
/// <summary>
/// 文档内容相关
/// </summary>
public class ContentItemSetting
{
/// <summary>
/// 标题
/// </summary>
public string Title { get; set; }
/// <summary>
/// 主要内容
/// </summary>
public string MainContent { get; set; }
/// <summary>
/// 使用字体
/// </summary>
public string FontName { get; set; } = "宋体";
/// <summary>
/// 字体大小,默认2号字体
/// </summary>
public int FontSize { get; set; } = 44;
/// <summary>
/// 是否加粗,默认不加粗
/// </summary>
public bool HasBold { get; set; } = false;
}
/// <summary>
/// 纸张类型
/// </summary>
public enum PaperType
{
/// <summary>
/// A4纵向
/// </summary>
A4_V,
/// <summary>
/// A4横向
/// </summary>
A4_H,
/// <summary>
/// A5纵向
/// </summary>
A5_V,
/// <summary>
/// A5横向
/// </summary>
A5_H,
/// <summary>
/// A6纵向
/// </summary>
A6_V,
/// <summary>
/// A6横向
/// </summary>
A6_H
}
#region 私有方法
/// <summary>
/// 获取纸张大小,单位:Twip
/// <para>换算关系:1英寸=1440缇 1厘米=567缇 1磅=20缇 1像素=15缇</para>
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
private static Tuple<int, int> GetPaperSize(PaperType type)
{
Tuple<int, int> res = null;
switch (type)
{
case Pa:
res = new Tuple<int, int>(11906, 16838);
break;
case Pa:
res = new Tuple<int, int>(16838, 11906);
break;
case Pa:
res = new Tuple<int, int>(8390, 11906);
break;
case Pa:
res = new Tuple<int, int>(11906, 8390);
break;
case Pa:
res = new Tuple<int, int>(5953, 8390);
break;
case Pa:
res = new Tuple<int, int>(8390, 5953);
break;
}
return res;
}
#endregion
}
}
调用方法:
N(
new DocumentSetting
{
PaperType = Pa,
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 = "宋体"
}
}
);
是不是一样很简单,但有个遗憾,这个封装的类不支持插入表格、图片,需要的还请大家自行扩展。
三、使用a
这个是第三方的,未开源,要有license不然会有水印,巧的是在nuget上发一个破解的。。大家偷偷用就好。
调用方法:
A doc = new A();
ABuilder builder = new ABuilder(doc);
builder.InsertHtml("html内容");
doc.Save("word.docx", A);
这个使用应该来说是最后简单,强烈推荐,A同时可以进行转pdf,等文件的互转,功能非常强大。其他功能,大家自行研究吧。
1.《【怎么把网页转到word上】.如何将net core HTML密钥导出到word》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《【怎么把网页转到word上】.如何将net core HTML密钥导出到word》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/2515474.html