1.【笑小枫的模板码SpringBoot系列】【十五】SpringBoot根据模板生成Word
2.用C#读取一个WORD模板,把里面的源码c源一些东西替换掉再生成一个新的WORD文档怎么做。谁那最好有源代码,模板码急要谢
3.Docx4j 使用简单教程
【笑小枫的源码c源SpringBoot系列】【十五】SpringBoot根据模板生成Word
通过maven引入需要的依赖创建导出模版
首先创建一个word模版文档,模版如下图
word模版地址: file.xiaoxiaofeng.site/...
注意word中的模板码占位符的格式,就是源码c源宣城安卓源码freemaker的格式
详细解释如下:
直接用${ } 中间为替换的字段名。
如果直接在word里面定义${ title},模板码在转换成xml的源码c源时候有可能会被一些编码隔开,这个时候只需要用word打开xml,模板码将这些内容重新输入一遍。源码c源
强烈建议用IDE打开,模板码然后格式化下,源码c源在进行检查处理,模板码能用搜索尽量搜索,源码c源xml的模板码格式里面有太多的代码,不要硬刚
需要在word文档模版中插入
将word转换成xml后,打开xml,会将我们的转换成长长的一段base。
我们把base换成我们的vpal源码${ pic}就可以了,pic为字段名,可任意替换
需要在word文档模版中插入表格
找到第二个,第一行是我们的标题,在其前面添加 <#list peopleList as list> 其中 peopleList是传入list的集合名称 list 是别名。
参数取值为:${ list.name}这样。
在与配对的后面添加。 语法同freemaker的for循环语法
创建ftl模板
将上述word文档另存为test.xml格式,另存完之后可以用浏览器打开test.xml文件,查看我们的fastzipevents 源码占位符是否标准
注意:占位符有时候会发生被隔开的情况,如下图:
的替换同上面的说明,为一串长长的base,如下图所示:
然后将文件放置resources/templates目录下。
放置在resource目录下即可,剩下的目录根据自己需求定制。注意要与WordUtil.java中的目录对应。
编写程序通用的导出工具类
在util包下创建WordUtil.java工具类
请求接口
在controller包下创建TestWordController.java
其中用到了之前文章的文件转base,参考文章 .Base与File互转
测试
在浏览器输入 本文源码: github.com/hack-feng/ma...
用C#读取一个WORD模板,把里面的libuv源码一些东西替换掉再生成一个新的WORD文档怎么做。谁那最好有源代码,急要谢
这是读取的:
public string ReadTemp(string tempPath)
{
string ModelTemp = HttpContext.Current.Server.MapPath(tempPath); // 读取模板文件
string str = "";
Encoding encoding = Encoding.GetEncoding("gb");
StreamReader sr = null;
try
{
sr = new StreamReader(ModelTemp, encoding);
str = sr.ReadToEnd(); // 读取文件
}
catch (Exception exp)
{
HttpContext.Current.Response.Write(exp.Message);
HttpContext.Current.Response.End();
sr.Close();
}
finally
{
sr.Close();
}
return str;
}
这是生成的:
public bool WriteTemp(string str, string filePath)
{
string OutPutPath = "";
OutPutPath = HttpContext.Current.Server.MapPath(filePath); //html存放地址
Encoding encoding = Encoding.GetEncoding("gb");
StreamWriter sw = null;
try
{
if (!Directory.Exists(HttpContext.Current.Server.MapPath(filePath.Remove(filePath.LastIndexOf('/')))))
Directory.CreateDirectory(HttpContext.Current.Server.MapPath(filePath.Remove(filePath.LastIndexOf('/'))));
sw = new StreamWriter(OutPutPath, false, encoding);
sw.Write(str);
sw.Flush();
}
catch (Exception ex)
{
HttpContext.Current.Response.Write(ex.Message);
HttpContext.Current.Response.End();
}
finally
{
sw.Close();
}
return true;
}
Docx4j 使用简单教程
在开发与word模板替换和占位符相关的内容时,我选择了使用Java和kotlin语言,进而接触到了docx4j这个用于处理docx、pptx和xlsx文件的库。
docx4j将docx文件解压,解析为一系列xml文件及其附属文件的zip格式,并通过JAXB将xml对象绑定为Java类实例表示其中的元素节点。这一库与docx4j能够处理docx文档的漆 源码竞品具有相同功能。
要开始使用docx4j,可访问其GitHub源代码地址和官方英文PDF文档进行学习。
理解WordML概念是使用docx4j的基础。Word文档解压缩后,主要文字内容位于word/document.xml中。通过docx4j demo webapp,可以查看docx文件的各个结构。每个部分通常为XML格式,部分可能包含等非XML元素。主文档部分通常名为“/word/Document.xml”,并有关系部分声明包含的子部分,如页眉、等。
docx4j结构分为三层:Parts层解析为JaxbXmlPart子类,形成树状结构,关系部分标识子孙后代;org.docx4j.wml层包含大部分parts;org.docx4j.model层建立在较低层之上,提供额外功能,正在逐步开发。
序列化与反序列化在docx4j中由marshalling和unmarshalling实现。打开docx文档时,docx4j自动反序列化XML部分生成强类型Java对象树。若需手动序列化或反序列化,可使用org.docx4j.jaxb.Context类和XmlUtils.marshalToString方法。
docx4j包含方便访问常用部分的方法。在package层,有直接访问方法;在document part层中,有具体部分访问方法。关系部分列出指向其他部分的链接。
MainDocumentPart包含所有正文内容的文字信息,是zip文件解压后的word/document.xml。内部元素如段落、表格等分别由org.docx4j.wml.P和类似类表示。段落实现ContentAccessor接口,可添加内容;所有实现ContentAccessor的对象内容保存为Java List对象,便于操作。
打开现有文档的使用示例:替换docx中的占位符为"Hello World"。占位符在文本域中设置,使用docx4j库搜索并替换。更复杂的遍历操作可实现根据变量值控制显示与否,例如删除占位符所在单元格或一整块内容。