需求:需要上传一个带有占位符的模板至数据库保存,然后解析模板的占位符,通过类计算结果替换模板中的占位符,并且保存至本地
难点:1.由于我数据库保存是本地保存,并没有path 所以获取模板的path是个难点
String fileBucket = sysFileInfo.getFileBucket();
if(fileBucket==null) fileBucket = DEFAULT_BUCKET;
// 返回文件地址
String fileUrl = fileOperator.getFilePath(fileBucket, sysFileInfo.getFileObjectName());
2.如何使用计算类,由于我的类是和占位符绑定的,什么样的占位符调用对应的接口
//获取执行类
String fullHandleClassName = rotationAnalysisProject.getHandleClass();
if(StringUtil.isNotEmpty(fullHandleClassName)){
int index = StrUtil.lastIndexOf(fullHandleClassName, ".", fullHandleClassName.length() - 1 , false);
String handleClassName = StrUtil.sub(fullHandleClassName, index + 1, fullHandleClassName.length());
handleClassName = StrUtil.lowerFirst(handleClassName);
RotationAnalysisReport handleClass = SpringUtil.getBean(handleClassName);
if(ObjectUtil.isNull(handleClass)){
throw new ServiceException(10001, "模板内"+key+"数据无法计算,请修改");
}
//替换内容
params.put(key, handleClass.calc(rotationAnalysisTemplateParam.getDate()));
}
3.如何下载到本地
注意点:这里不适合用ajax请求
效果实现如下图
具体代码如下
前段请求(一定不能用ajax请求)文章来源:https://www.toymoban.com/news/detail-563034.html
//请求地址
var url = getProjectUrl() + 'rotationAnalysisTemplate/download';
console.log(url+ "?id="+ data.field.id);
//打开新页面下载
window.open(url+ "?id="+ data.field.id + "&date="+data.field.date);
//关闭当前弹框
layer.closeAll()
severviceImpl文章来源地址https://www.toymoban.com/news/detail-563034.html
public void downLoad (RotationAnalysisTemplateParam rotationAnalysisTemplateParam, HttpServletResponse response) throws IOException {
RotationAnalysisTemplate rotationAnalysisTemplate = this.getById(rotationAnalysisTemplateParam.getId());
SysFileInfo sysFileInfo = sysFileInfoService.getById(rotationAnalysisTemplate.getFileInfoId());
LocalFileOperator fileOperator = SpringUtil.getBean(LocalFileOperator.class);
//获取文件地址
String fileBucket = sysFileInfo.getFileBucket();
if(fileBucket==null) fileBucket = DEFAULT_BUCKET;
// 返回文件地址
String fileUrl = fileOperator.getFilePath(fileBucket,
sysFileInfo.getFileObjectName());
//解析文档
//读取文件
OPCPackage opcPackage = POIXMLDocument.openPackage(fileUrl);
到了这里,关于JAVA使用POI对Word docx模板文件替换数据工具类并通过浏览器下载到本地的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!