-
2022-06-23 15:47:20
项目场景:
提示:这里简述项目相关背景:
利用word模板导出word文档
问题描述
解析docx模板并获取Document对象时,documet对象为null.
//利用file对象打开word模板 File f=new File("C:\\Users\\29595\\Desktop\\testReport_template2.docx"); InputStream fr=new FileInputStream(f); //解析docx模板并获取Document对象 XWPFDocument document = new XWPFDocument(fr) # 解决方案: 查看模板对象是否获取 > 解决方法一:System.out.println(fr.available());如果输出一串数字,是读取的模板的字节数,表明模板对象已经获取(不用怀疑了,只要输出数字就一定读取到了,模板路径也是存在) 如果模板没有获取,查看自己的路径中是否存在模板 >如果路径正确,但是没有获取到模板,将模板.doc改为.docx 确定模板对象获取到了, 但是在执行这个语句时 XWPFDocument document = new XWPFDocument(fr); document对象为null >原因poi jar包冲突 >解决:将以下代码粘贴上去运行 根据输出的路径找jar包,如果里面有两个jar包,将输出的jar 包删除 ClassLoader classloader =org.apache.poi.poifs.filesystem.POIFSFileSystem.class.getClassLoader(); URL res = classloader.getResource( "org/apache/poi/poifs/filesystem/POIFSFileSystem.class"); String path = res.getPath(); System.out.println("poi的jar包的路径 " + path); ## 总结: 之前一直以为是模板路径的问题,疯狂找原因,怎么也没想到是jar包的原因,这个错误真的是让我找了四五天,希望对你们有帮助
更多相关内容 -
FreeMaker解析Word模板(含图片)生成Word文档
2016-07-21 22:00:43FreeMaker解析Word模板(含图片)生成Word文档 -
java 根据word文档模板导出word
2021-05-27 16:44:301 创建word模板 2 动态数据占位 格式:${xxxxx} 3 点击另存为xml格式 4 修改后缀名为ftl 5 导入到idea中 6 修改文件编码为utf-8 7 复制模板内容在线代码格式化 8 编辑模板中内容 如果有空值会报错,...1 创建word模板
2 动态数据占位
格式:${xxxxx}
3 点击另存为xml格式
4 修改后缀名为ftl
5 导入到idea中
6 修改文件编码为utf-8
7 复制模板内容在线代码格式化
8 编辑模板中内容
如果有空值会报错,可以 ${xxxx !''}处理,网上查看可以在配置文件中配置,但是我试了总是不生效
spring.freemarker.settings.classic_compatible=true
有需要遍历的表格
9 导出
因为使用ftl模板,需要引入jar包
<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.30</version> </dependency>
模板取值需要从map中取值,对象转map就可以了
public void exportReport(HttpServletResponse response, Integer receiptId) throws IOException, TemplateException { Map<String, Object> dataMap = new HashMap<>(); //获取,可忽略 PrintReceiptInfoVO printReceiptInfoVO = this.getPrintReceiptInfo(receiptId); if(printReceiptInfoVO != null) { String ecpNoticeId = printReceiptInfoVO.getEcpNoticeId(); if(!StringUtils.isEmpty(ecpNoticeId)) { String ecpResult = ecpApi.getOrderNoticeInfoMain(ecpNoticeId); if(!StringUtils.isEmpty(ecpResult)) { RemoteResult remoteResult = JSON.parseObject(ecpResult, new TypeReference<RemoteResult>() {}); if ("200".equals(remoteResult.getStatus()) && remoteResult.getData() != null && !"[]".equals(remoteResult.getData().toString())){ List<EcpPrintInfoVO> ecpReceiptVOS = JSON.parseObject(remoteResult.getData().toString(),new TypeReference<List<EcpPrintInfoVO>>(){}); if(!CollectionUtils.isEmpty(ecpReceiptVOS)) { EcpPrintInfoVO ecpPrintInfoVO = ecpReceiptVOS.get(0); if(ecpPrintInfoVO != null) { BeanUtils.copyProperties(ecpPrintInfoVO,printReceiptInfoVO); printReceiptInfoVO.setConsignorRemark("样机"); } } } } } dataMap = MapBeanUtil.object2Map(printReceiptInfoVO); } //获取数据end PrintWriter out = response.getWriter(); //配置对象 Configuration configuration = new Configuration(); //设置配置的字符编码为utf-8,避免字符集问题 configuration.setDefaultEncoding("UTF-8"); //获取resources下指定的文件夹路径,如果项目需要打成jar包, //此举很重要,别的方式可能无法获取到模板文件夹的相对路径 configuration.setClassForTemplateLoading(this.getClass(), "/templates"); // 获取模板实例,上行配置了模板文件所在路径 Template t = configuration.getTemplate("exportReceipt.ftl", "utf-8");//以utf-8的编码读取ftl文件 //设置响应类型为word response.setContentType("application/msword"); //设置响应头,注意如果导出的word名含有汉字则需要将文件名 //变成byte并且指定字符集为gbk,表示将GBK汉字转为byte //然后将其转为iso8859-1的字符串 response.setHeader("Content-Disposition", "attachment;filename=\"" + new String(("导出报告.doc").getBytes("GBK"), "iso8859-1") + "\""); //此句非常关键,不然word文档全是乱码 response.setCharacterEncoding("utf-8"); //使用数据填充模板 t.process(dataMap, out); //以流的输出到浏览器,即下载 out.close(); }
import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.HashMap; import java.util.Map; /** * map转bean,bean转map */ public class MapBeanUtil { /** * 实体对象转成Map * * @param obj 实体对象 * @return */ public static Map<String, Object> object2Map(Object obj) { Map<String, Object> map = new HashMap<>(); if (obj == null) { return map; } Class clazz = obj.getClass(); Field[] fields = clazz.getDeclaredFields(); try { for (Field field : fields) { field.setAccessible(true); map.put(field.getName(), field.get(obj)); } } catch (Exception e) { e.printStackTrace(); } return map; } /** * Map转成实体对象 * * @param map 实体对象包含属性 * @param clazz 实体对象类型 * @return */ public static Object map2Object(Map<String, Object> map, Class<?> clazz) { if (map == null) { return null; } Object obj = null; try { obj = clazz.newInstance(); Field[] fields = obj.getClass().getDeclaredFields(); for (Field field : fields) { int mod = field.getModifiers(); if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) { continue; } field.setAccessible(true); field.set(obj, map.get(field.getName())); } } catch (Exception e) { e.printStackTrace(); } return obj; } }
-
模板 文档模板 WORD背景
2011-12-18 15:29:11文档模板 不错啦 -
12套简历模板+封面+自荐信-word文档.zip
2021-11-26 17:03:1312套简历+封面+自荐信-word文档 1.艺术类简历+封面+求职信模板.doc 10.蓝色极简【封面+简历+自荐信】.doc 11.蓝色商务简洁模板【简历+自荐信】.docx 12.桌面个人简历.doc 2.绿色树叶【简历封面+简历+自荐书】.doc 3.... -
利用poi读取word模板文件生成新的word文档
2021-03-13 18:58:25利用poi读取word模板文件生成新的word文档利用poi读取word模板文件,并回填逻辑数据,生成并导出需要的word文档源码。解决模板读取异常问题,提供wordUtils工具类(各种功能实现) 第一步: 项目结构见下图: 第二步:...利用poi读取word模板文件生成新的word文档
利用poi读取word模板文件,并回填逻辑数据,生成并导出需要的word文档源码。解决模板读取异常问题,提供wordUtils工具类(各种功能实现) 第一步: 项目结构见下图: 第二步: 前端界面见下
第三步: 模板样式
第四步: 输出结果
核心代码如下:
package com.word.poi.demo.controller;
import com.word.poi.demo.service.WordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
@RestController
@RequestMapping("/word")
@CrossOrigin(origins = "*", maxAge = 3600)
@Api(tags = "word文档处理")
public class WordController {
@Autowired
private WordService wordService;
@RequestMapping(value = "/exportWord",method = RequestMethod.GET)
@ApiOperation(value = "生成并导出word文档", httpMethod = "GET", notes = "生成并导出word文档", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public void exportFDDBrief(
HttpServletResponse response
) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HHmmss");
//获取统计时间段
String time = "10.09-10.19";
String wordName = "Word版-("+time+")"+sdf.format(new Date());
// 告诉浏览器用什么软件可以打开此文件
response.reset();// 清空输出流
response.setHeader("content-Type", "application/msword");
// 下载文件的默认名称
response.setHeader("Content-Disposition", "attachment;filename="
+new String(wordName.getBytes("GB2312"), "8859_1") + ".docx");
OutputStream out = response.getOutputStream();
//读取word模板
InputStream in = this.getClass().getResourceAsStream("/templates/wordTemplate.docx");
wordService.exportWord(in,out,"全球");
}
}
package com.word.poi.demo.util;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xwpf.usermodel.*;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 通过word模板生成新的word工具类
*
*/
public class WorderToNewWordUtils {
/**
* 根据模板生成新word文档
* 判断表格是需要替换还是需要插入,判断逻辑有${}为替换,表格无${}为插入
* @param textMap 需要替换的信息集合
* @return 成功返回true,失败返回false
*/
public static XWPFDocument changWordForcommon(InputStream in,Map textMap) {
XWPFDocument document = null;
try {
//第一步:获取docx解析对象
document = new XWPFDocument(in);
//第二步:重构XWPFDocument中 不合格的 占位符 比如:${abcd}分开为${a,b..,cd}
refactorXWPFDocument(document);
//第三步:解析替换文本段落对象
changeText(document, textMap);
//第四步:解析替换表格对象
changeTableCity(document, textMap);
} catch (IOException e) {
e.printStackTrace();
}
return document;
}
/**
* 根据模板生成新word文档
* 判断表格是需要替换还是需要插入,判断逻辑有${}为替换,表格无${}为插入
* @param textMap 需要替换的信息集合
* @param extendTableMap 需要插入的表格信息集合
* @param colorMapForCell
* @return 成功返回true,失败返回false
*/
public static XWPFDocument changWordForComplex(
InputStream in,
Map textMap,
Map>> extendTableMap,
Map> colorMapForCell) {
XWPFDocument document = null;
try {
//第一步:获取docx解析对象
document = new XWPFDocument(in);
//第二步:重构XWPFDocument中 不合格的 占位符 比如:${abcd}分开为${a,b..,cd}
refactorXWPFDocument(document);
//第三步:解析替换文本段落对象
changeText(document, textMap);
//第四步:解析替换表格对象
changeTableProvince(document, textMap, extendTableMap);
//第五步:根据逻辑设置表格cell的背景颜色
setColorForCell(document,colorMapForCell);
} catch (IOException e) {
e.printStackTrace();
}
return document;
}
private static void setColorForCell(XWPFDocument document, Map> colorMapForCell) {
List tables = document.getTables();
for (int i = 0; i
List placeList = colorMapForCell.get("table" + i);//获取表格坐标list
if (CollectionUtils.isNotEmpty(placeList)){
for (String palce:placeList) {
String[] split = palce.split(",");
int x = Integer.parseInt(split[0]);
int y = Integer.parseInt(split[1]);
tables.get(i).getRow(x).getCell(y).setColor("FF0000");
}
}
}
}
/**
* 替换段落文本
* @param document docx解析对象
* @param textMap 需要替换的信息集合
*/
public static void changeText(XWPFDocument document, Map textMap){
//获取段落集合
List paragraphs = document.getParagraphs();
for (XWPFParagraph paragraph : paragraphs) {
//判断此段落时候需要进行替换
String text = paragraph.getText();
//重构段落 不合格的 占位符 比如:${abcd}分开为${a,b..,cd}
// refactorParagraph(paragraph);
if(checkText(text)){
List runs = paragraph.getRuns();
for (XWPFRun run : runs) {
//替换模板原来位置
run.setText(changeValue(run.toString(), textMap),0);
}
}
}
}
/**
* 替换表格对象方法
* @param document docx解析对象
* @param textMap 需要替换的信息集合
*/
public static void changeTableCity(XWPFDocument document, Map textMap
){
//获取表格对象集合
List tables = document.getTables();
for (int i = 0; i < tables.size(); i++) {
//只处理行数大于等于2的表格,且不循环表头
XWPFTable table = tables.get(i);
if(table.getRows().size()>1){
//判断表格是需要替换还是需要插入,判断逻辑有$为替换,表格无$为插入
if(checkText(table.getText())){
List rows = table.getRows();
//遍历表格,并替换模板
eachTable(rows, textMap);
}
}
}
}
/**
* 替换表格对象方法
* @param document docx解析对象
* @param textMap 需要替换的信息集合
* @param extendTableMap 需要插入的表格信息集合
*/
public static void changeTableProvince(XWPFDocument document, Map textMap,
Map>> extendTableMap){
//获取表格对象集合
List tables = document.getTables();
int tableNo = 0;
for (int i = 0; i < tables.size(); i++) {
//只处理行数大于等于2的表格,且不循环表头
XWPFTable table = tables.get(i);
if(table.getRows().size()>1){
//判断表格是需要替换还是需要插入,判断逻辑有$为替换,表格无$为插入
if(checkText(table.getText())){
List rows = table.getRows();
//遍历表格,并替换模板
eachTable(rows, textMap);
tableNo++;
}else{
List> tableList = extendTableMap.get("table" + tableNo);
insertTable(table, tableList);
tableNo++;
}
}
}
}
/**
* 遍历表格
* @param rows 表格行对象
* @param textMap 需要替换的信息集合
*/
public static void eachTable(List rows ,Map textMap){
for (XWPFTableRow row : rows) {
List cells = row.getTableCells();
for (XWPFTableCell cell : cells) {
//判断单元格是否需要替换
if(checkText(cell.getText())){
List paragraphs = cell.getParagraphs();
for (XWPFParagraph paragraph : paragraphs) {
List runs = paragraph.getRuns();
for (XWPFRun run : runs) {
run.setText(changeValue(run.toString(), textMap),0);
}
}
}
}
}
}
/**
* 为表格插入数据,行数不够添加新行
* @param table 需要插入数据的表格
* @param tableList 插入数据集合
*/
public static void insertTable(XWPFTable table, List> tableList){
//创建行,根据需要插入的数据添加新行,不处理表头
for(int i = 1; i < tableList.size(); i++){
//XWPFTableRow row =table.createRow();
}
//遍历表格插入数据
List rows = table.getRows();
for(int i = 1; i < rows.size(); i++){
XWPFTableRow newRow = table.getRow(i);
List cells = newRow.getTableCells();
for(int j = 0; j < cells.size(); j++){
XWPFTableCell cell = cells.get(j);
// cell.setText(tableList.get(i-1).get(j));
XWPFParagraph xwpfParagraph = cell.getParagraphs().get(0);//获取cell中的第一个段落第一个ruan并设置字体样式和内容
XWPFRun run = xwpfParagraph.createRun();
run.setFontSize(9);
run.setFontFamily("宋体");
run.setText(tableList.get(i-1).get(j));
}
}
}
/**
* 判断文本中时候包含{{
* @param text 文本
* @return 包含返回true,不包含返回false
*/
public static boolean checkText(String text){
boolean check = false;
if(null != text && text.indexOf("$")!= -1){
check = true;
}
return check;
}
/**
* 匹配传入信息集合与模板
* @param value 模板需要替换的区域
* @param textMap 传入信息集合
* @return 模板需要替换区域信息集合对应值
*/
public static String changeValue(String value, Map textMap){
Set> textSets = textMap.entrySet();
for (Entry textSet : textSets) {
//匹配模板与替换值 格式{{key}}
String key = "${"+textSet.getKey()+"}";
if(null != value && value.indexOf(key)!= -1){
String s = textSet.getValue();
value = s;
}
}
//模板未匹配到区域替换为空
if(checkText(value)){
value = "NULL";
}
return value;
}
public static void refactorXWPFDocument(XWPFDocument doc) {
try {
buildParagraph(doc);
buildTable(doc);
/*List paragraphs = doc.getParagraphs();
for (XWPFParagraph paragraph : paragraphs){
List runs = paragraph.getRuns();
for (XWPFRun run : runs){
System.out.println(run.toString());
}
}*/
} catch (Exception e) {
e.printStackTrace();
}
//return doc;
}
public static void refactorParagraph(XWPFParagraph paragraph) {
int start = -1;
int end = -1;
List runs = paragraph.getRuns();
for (int i = 0; i < runs.size() ; i++) {
String runText = runs.get(i).toString();
if ('$' == runText.charAt(0)&&'}' == runText.charAt(runText.length() - 1)){
continue;
}
if ('$' == runText.charAt(0)){
start = i;
}
if ('}' == runText.charAt(runText.length() - 1)){
end = i;
break;
}
}
if (start != -1){
mergeRun(paragraph,start,end);
refactorParagraph(paragraph);
}
}
/* public static void main(String[] args) {
String runText ="";
char c = runText.charAt(0);
System.out.println(c);
}*/
public static void mergeRun(XWPFParagraph paragraph, int start, int end) {
int removeCount = end-start;//删除次数
int removeIndex = start+1;//删除开始位置
List runs = paragraph.getRuns();
for (int i = 0; i
System.out.println(runs.get(i).toString());
}
StringBuilder sb = new StringBuilder();
sb.append(runs.get(start).toString());
for (int i = 0; i < removeCount; i++){
sb.append(runs.get(removeIndex).toString());
paragraph.removeRun(removeIndex);
}
runs.get(start).setText(sb.toString(),0);
}
public static Matcher matcher(String str) {
Pattern pattern = Pattern.compile("\\$\\{(.+?)\\}", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(str);
return matcher;
}
public static void buildParagraph(XWPFDocument document){
for (XWPFParagraph paragraph : document.getParagraphs()) {
if (matcher(paragraph.getText()).find()) {
removeEmptyRun(paragraph);
refactorParagraph(paragraph);
}
}
}
public static void buildTable(XWPFDocument document){
List tables = document.getTables();
for (XWPFTable xwpfTable : tables) {
List rows = xwpfTable.getRows();
for (XWPFTableRow row :rows){
List tableCells = row.getTableCells();
for (XWPFTableCell tableCell : tableCells){
List paragraphs = tableCell.getParagraphs();
for (XWPFParagraph paragraph : paragraphs){
if (matcher(paragraph.getText()).find()) {
removeEmptyRun(paragraph);
refactorParagraph(paragraph);
}
}
}
}
}
}
private static void removeEmptyRun(XWPFParagraph paragraph) {
List runsq = paragraph.getRuns();
for (int i = 0; i
String runText = runsq.get(i).toString();
if (StringUtils.isEmpty(runText)){
paragraph.removeRun(i);
break;
}
}
for (int i = 0; i
String runText = runsq.get(i).toString();
if (StringUtils.isEmpty(runText)){
removeEmptyRun(paragraph);
break;
}
}
}
}
具体源码详见:https://download.csdn.net/download/qq_36244155/10805107 源码下载后,用idea打开,maven加载依赖即可运行。 也可以打包成demo-0.0.1-SNAPSHOT.jar后, 用命令 java -jar demo-0.0.1-SNAPSHOT.jar 运行。 访问地址:http://localhost:8080/# swagger访问地址:http://localhost:8080/swagger-ui.html
-
Word模板-奶牛农场背景.wps
2019-09-06 12:16:51Word模板-奶牛农场背景.wps -
Word书面背景模板
2013-11-13 16:36:35含义 word模板是指microsoft word中内置的包含固定格式设置和版式设置的模板文件,用于帮助用户快速生成特定类型的word文档。例如在word2010中除了通用型的空白文档模板...这些模板.. -
市场专员简历暗红背景应届生Word简历模板
2020-11-24 19:38:15这是一套市场专员简历暗红背景应届生Word简历模板,喜欢的人都来下载吧。该文档为市场专员简历暗红背景应届生Word简历模板,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看 -
Java 给Word文档添加背景颜色
2021-03-01 07:11:26前言当我们制作好Word文档后,想要让枯燥乏味的文本显得有活力,或是想高亮显示文档中指定的段落或文字,此时我们可以通过为整个文档或某特定文字/段落添加背景色的形式来实现。本文将使用Free Spire.Doc for Java...前言
当我们制作好Word文档后,想要让枯燥乏味的文本显得有活力,或是想高亮显示文档中指定的段落或文字,此时我们可以通过为整个文档或某特定文字/段落添加背景色的形式来实现。本文将使用Free Spire.Doc for Java控件来演示如何在Java程序中给Word文档添加背景颜色。
本文代码演示内容可分为:
给整个Word文档添加背景颜色
1)添加纯色背景色
2)添加渐变色背景色
给Word文档中的指定段落或文字添加背景色
测试环境
在运行代码前,需要搭建测试环境。首先下载安装配置好JDK和IntelliJ IDEA, 然后将Free Spire.Doc for Java控件里的Jar包导入IDEA。这里重点讲解下如何导入Jar包。导入方式一共有两种:其一,在官网上下载产品包,解压后将lib文件夹下的Spire.Doc.jar手动导入IDEA;其二(推荐使用),在IDEA中创建一个Maven项目,然后在pom.xml文件中键入以下代码,最后点击“Import Changes”即可。
com.e-iceblueid>
http://repo.e-iceblue.cn/repository/maven-public/url>
repository>
repositories>
e-icebluegroupId>
spire.doc.freeartifactId>
3.9.0version>
dependency>
dependencies>
最终导入效果如下图所示:
代码演示
示例1 给整个Word文档添加背景颜色
1)添加纯色背景色
import com.spire.doc.*;
import com.spire.doc.documents.BackgroundType;
import java.awt.*;
public class SolidBackgroundColor { public static void main(String[] args) { //加载Word示例文档
Document document= new Document("C:UsersTest1DesktopSample.docx"); //添加背景颜色并设置颜色类型
document.getBackground().setType(BackgroundType.Color); document.getBackground().setColor(Color.lightGray); //保存结果文档
document.saveToFile("output/AddSolidColor.docx", FileFormat.Docx); }
}
效果图:
2)添加渐变色背景色
import com.spire.doc.*;
import com.spire.doc.documents.BackgroundType;
import com.spire.doc.documents.GradientShadingStyle;
import com.spire.doc.documents.GradientShadingVariant;
import java.awt.*;
public class GradientBackgroundColor { public static void main(String[] args) { //加载Word示例文档
Document document= new Document("C:UsersTest1DesktopSample.docx"); //添加背景颜色并设置颜色类型
document.getBackground().setType(BackgroundType.Gradient); document.getBackground().getGradient().setColor1(Color.white); document.getBackground().getGradient().setColor2(Color.cyan); document.getBackground().getGradient().setShadingVariant(GradientShadingVariant.Shading_Down); document.getBackground().getGradient().setShadingStyle(GradientShadingStyle.Horizontal); //保存结果文档
document.saveToFile("output/AddGradientColor.docx", FileFormat.Docx_2013); }
}
效果图:
示例2 给文档中的指定段落或文字添加背景色
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;
import java.awt.*;
public class SetParagraphShading{ public static void main(String[] args) { //加载Word示例文档
Document document = new Document(); document.loadFromFile("C:UsersTest1DesktopSample.docx"); //获取文档中的指定段落
Paragraph paragaph = document.getSections().get(0).getParagraphs().get(3); //给指定段落添加背景色
paragaph.getFormat().setBackColor(Color.yellow); //获取文档中的指定文本
paragaph = document.getSections().get(0).getParagraphs().get(1); TextSelection selection = paragaph.find("圣诞节", true, false); //给指定文本添加背景色
TextRange range = selection.getAsOneRange(); range.getCharacterFormat().setTextBackgroundColor(Color.pink); //保存结果文档
document.saveToFile("output/AddParagraphShading.docx", FileFormat.Docx_2013); }
}
效果图:
文章来源: segmentfault.com,作者:Tina_Tang,版权归原作者所有,如需转载,请联系作者。
原文链接:segmentfault.com/a/1190000037772978
-
大学生个人简历模板word格式下载
2021-01-02 07:41:14该简历模板主要包含个人基本信息,求职意向,教育背景,资质证书,社会实践,个人能力,爱好,联系方式栏目,由管...该文档为大学生个人简历模板word格式下载,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看 -
淡蓝色信纸背景素材word模板.doc
2020-12-07 18:23:15这是一套淡蓝色信纸背景素材word模板,喜欢的人都来下载吧。该文档为淡蓝色信纸背景素材word模板.doc,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看 -
wordgo:WordGO-让Java生成word文档更容易
2021-03-20 10:05:35WordGO-让Java生成word文档更容易。 【选择语言:】 项目背景 如果不希望创建模板,还想少些点代码,选单词GO是个好主意~~ 安装 手动导入jar包 IDEA导入:单击文件项目结构;然后在顶部找到模块并单击;最后在右侧... -
灯塔灰黑色背景封面个人简历word模板.doc
2020-12-07 18:31:17这是一套灯塔灰黑色背景封面个人简历word模板,喜欢的人都来下载吧。该文档为灯塔灰黑色背景封面个人简历word模板.doc,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看 -
90份高中英语干货WORD文档资料汇总英语学习资料.zip
2021-11-01 16:14:45十大应用文常用句型和写作模板.docx 十大魔鬼动词.docx 历年高考短文改错题汇总.docx 坚定词汇教学信念,为教师赋能——终稿.docx 备考干货-中学阶段语法考点全貌.doc 如何使用维词书.docx 平均分50分怎么办?做减法... -
怕安静简历封面Word模板下载
2020-11-23 21:37:18这是整理发布的一款个人简历背景模板,适合求职使用,有需要的小伙伴快下载使用吧!该文档为怕安静简历封面Word模板下载,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看 -
蓝条背景个人求职简历模板word格式下载
2021-01-02 09:38:57该简历模板是以蓝条背景装饰,由整理提供下载的个人工作简历模板,全局看起来非常不错,该模...该文档为蓝条背景个人求职简历模板word格式下载,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看 -
蓝色背景卡通风格个人简历word模板.doc
2020-12-07 18:27:37这是一套蓝色背景卡通风格个人简历word模板,喜欢的人都来下载吧。该文档为蓝色背景卡通风格个人简历word模板.doc,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看 -
Word保存自己格式模板的方法
2021-03-21 09:26:191.word每次打开都会自动打开默认模板,而我们自己设置了一些样式有时候却用不上,每次打开都得重新设置样式。本文记录一下怎么设置自己的模板为默认打开模板。 2.首先需要设置好自己需要的样式。不知道怎么设置... -
软件开发技术设计文档模板(20201120151615).pdf
2020-11-30 13:20:49WORD 格式 -- 可编辑 1. 引言 1.1 设计背景 在快节奏的大学日常生活中社交软件已经成为大家日常必不可少的一部分普通大学生的朋友圈和 QQ 空间等社交软件平台上经常能够看到有人 发送寻物启事或是拾到他人丢失物品的... -
护理专业个人简历模板word免费下载
2021-01-02 09:27:27护理专业个人简历模板是以浅红条为背景栏,比较适合个人求职使用,该模板是word格式,下载后可以根据实际...该文档为护理专业个人简历模板word免费下载,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以... -
word设置背景色为护眼的绿色
2021-05-13 14:18:29新建一个word空白文档。 步骤二、 依次点开“设计-页面颜色”,选择自己想要的背景色。一般豆沙绿的参数是:红:202,绿:234,蓝:202。 也可以设置成其它自己喜欢的颜色。 步骤四 另存为word模板文件Normal.... -
java 制作word模板
2020-10-29 16:54:49背景:用于实现动态调整word模板中的内容 条件:office组件中格式为docx的word文件 对象与属性关系,如图所示 -
word背景颜色怎么设置绿色?把word背景调成绿色
2021-08-02 11:00:191、打开要阅读的Word文档,如下图所示,默认的页面背景色为白色。 2、找到菜单栏上的“页面布局按钮”,单击该按钮展开设置项。 3、在展开的设置项目中可以找到下图红色框内按钮,选择该按钮可以打开页面颜色... -
利用FreeMaker实现网页到Word文档的生成
2021-06-10 02:52:44需求背景:将用户提交的活动报名信息生成Word供用户下载。目前个人对于freemaker的理解是,freemaker是一个模板引擎工具,可以利用它来实现网页的文本输出。实现功能需要freemaker的jar包。百度都有。本人用的是... -
java利用poi导出word文档
2021-11-03 23:12:06项目中,有时候需要使用poi实现将固定数据导入word中 效果图: 代码: package poiword; import java.io.File; import java.io.FileOutputStream; import java.math.BigInteger; import org.apache.poi.xwpf.... -
PHP读取word文档
2021-04-26 19:25:09在PHP中读取和写入WORD文档的代码 php// 建立一个指向新COM组件的索引$word = new COM(”word.application”) or die(”Can't start Word!”);// 显示目前正在使用的Word的版本号//echo “Loading Word, v. {$word-&... -
word文档怎样加页面
2021-01-12 18:04:33word文档怎么加页一、添加页在WORD中,使用键盘组合键:Ctrl + 回车键可以添加页。方法2:单击页面布局---->分隔符---->分页符,如图所示。word文档怎么在两页之中添加新的一页?如何在Word文档竖版页面中间... -
Python3操作Office之Word模板技术
2021-01-12 02:13:27在平时工作当中,经常会遇到大部分文字固定不变,小部分内容修改的相关文档。如放假通知、工作日志、工作周报、合同等。以往都要打开,修改,保存,犹如机械...1在Python编程语言当中,操作Word模板,需要用到pyt...