首页 分享 poi导出word文章参考及word打不开、word替换不成功

poi导出word文章参考及word打不开、word替换不成功

来源:花匠小妙招 时间:2025-03-15 20:38

最新推荐文章于 2022-11-30 21:19:25 发布

jiangshalee 于 2019-12-05 14:03:16 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文参考地址:https://blog.csdn.net/wangxiaoyingWXY/article/details/95377533

本文参考地址:https://blog.csdn.net/u014427811/article/details/100771314#comments

感谢大佬们的详解

1、目前遇到的问题是当修改文档内的图表,导出的文档微软office打不开,wps却可以。我得是因为添加图例出问题了所以打不开。

建议定位出问题的地方,比如我定位到更换图表打不开之后定位到了具体是图例出了问题。记录一下也给大家一个参考。

------------------------------------------------------------追加解决方式------------------------------------------------------------------------------

定位到是刷新内置excel有问题,我直接注释掉了。图表能显示 word也可以用微软打开了。。。

之后精确定位是增加柱状图图例出了问题。但是据说poi4没有word对柱状图图例的操作,最后解决办法只能预先写好图例。

另外刷新柱状图页面数据建议下面这个

/**

* 刷新柱状图数据方法

*

* @param typeChart

* @param serList

* @param dataList

* @param fldNameArr

* @param position

* @return

*/

public static boolean refreshBarStrGraphContent(Object typeChart,

List<?> serList, List<Map<String, String>> dataList, List<String> fldNameArr, int position) {

boolean result = true;

//更新数据区域

for (int i = 0; i < serList.size(); i++) {

//CTSerTx tx=null;

CTAxDataSource cat = null;

CTNumDataSource val = null;

CTBarSer ser = ((CTBarChart) typeChart).getSerArray(i);

//tx= ser.getTx();

// Category Axis Data

cat = ser.getCat();

// 获取图表的值

val = ser.getVal();

// strData.set

CTStrData strData = cat.getStrRef().getStrCache();

CTNumData numData = val.getNumRef().getNumCache();

strData.setPtArray((CTStrVal[]) null); // unset old axis text

numData.setPtArray((CTNumVal[]) null); // unset old values

// set model

long idx = 0;

for (int j = 0; j < dataList.size(); j++) {

//判断获取的值是否为空

String value = "0";

if (new BigDecimal(dataList.get(j).get(fldNameArr.get(i + position))) != null) {

value = new BigDecimal(dataList.get(j).get(fldNameArr.get(i + position))).toString();

}

if (!"0".equals(value)) {

CTNumVal numVal = numData.addNewPt();//序列值

numVal.setIdx(idx);

numVal.setV(value);

}

CTStrVal sVal = strData.addNewPt();//序列名称

sVal.setIdx(idx);

sVal.setV(dataList.get(j).get(fldNameArr.get(0)));

idx++;

}

numData.getPtCount().setVal(idx);

strData.getPtCount().setVal(idx);

//赋值横坐标数据区域

String axisDataRange = new CellRangeAddress(1, dataList.size(), 0, 0)

.formatAsString("Sheet1", true);

cat.getStrRef().setF(axisDataRange);

//数据区域

String numDataRange = new CellRangeAddress(1, dataList.size(), i + position, i + position)

.formatAsString("Sheet1", true);

val.getNumRef().setF(numDataRange);

}

return result;

}

2、之前遇到有的字段可以替换有的不行

解决方式是每个需要替换的字段及标识符号需要重头到尾手动写出来,不能复制粘贴!!!!主要是因为里面字段识别符号和你需要替换的单词分开了。最新思路是自己将替换自己识别字段组合起来,这样就比较正常了。不像原版替换比较魔性没有规律。

关于文档内容无法替换建议参考

https://blog.csdn.net/chengui1990/article/details/100703359

相关知识

ckeditor 实现ctrl+v粘贴图片并上传、word粘贴带图片
word花式字体,word花式字体如何设置
利用Freemarker在Java项目中优雅生成Word文档:实战指南
word字体库
Word如何美化字体?
Word排版艺术
【word】 向日葵杂交制种技术
word怎么制作回头的回字形箭头?
免费Word简历模板下载指南:专业简历轻松制作
Word字体

网址: poi导出word文章参考及word打不开、word替换不成功 https://www.huajiangbk.com/newsview1722310.html

所属分类:花卉
上一篇: 儿童手工折纸大全 纸艺书签折纸方
下一篇: 温泉街道汤边社区:“小小书签,浓

推荐分享