java 中FreeMaker的使用(excel、word),涉及解压缩
最近在项目中,涉及到很多(word、excel)导入、导出的功能,word 版的搞得好久 涉及到单选框 、 附件、文本、图片。记录下来希望对有这方面需求的同学有所帮助:
word 导出篇
最终效果(写入后单选框可点击,附件点击可解压)
先来关键代码
1:maven依赖
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
2:配置类
import freemarker.template.TemplateException;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.ui.freemarker.FreeMarkerConfigurationFactory;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
import java.io.IOException;
import java.util.Properties;
/**
* @author 一阵小风儿-来无影去无踪
* @history 修订历史(历次修订内容、修订人、修订时间等)
**/
@Configuration
public class FreeMakerConfigure {
@Bean
public FreeMarkerConfigurer freemarkerConfig() throws IOException, TemplateException {
FreeMarkerConfigurationFactory factory = new FreeMarkerConfigurationFactory();
factory.setTemplateLoaderPath("classpath:/templates/");
factory.setDefaultEncoding("UTF-8");
factory.setPreferFileSystemAccess(true);
FreeMarkerConfigurer result = new FreeMarkerConfigurer();
freemarker.template.Configuration configuration = factory.createConfiguration();
configuration.setClassicCompatible(true);
result.setConfiguration(configuration);
Properties settings = new Properties();
settings.put("template_update_delay", "0");
settings.put("default_encoding", "UTF-8");
settings.put("number_format", "0.######");
settings.put("classic_compatible", true);
settings.put("template_exception_handler", "ignore");
result.setFreemarkerSettings(settings);
return result;
}
}
3:模板的生成
这个我也是参考链接: sun_flower火柴人.(站在别人的肩膀 我能看的更高。。。。。。舒服。。。。。一时,后来我发现对于单选框,附件还是要自己搞能搜的资料真的很少,可是模板的样式真的很赞 不愿意用poi 编写样式,于是我继续钻。。。。。)
4:模板位置
5:我的模板导出是直接在批量导出的功能中 、可自行忽略压缩输出
@Override
public void getDownLoadInfo(List<String> ids, HttpServletResponse response) throws Exception {
if (!CollectionUtils.isEmpty(ids)) {
//response 输出流
ServletOutputStream out = null;
//压缩输出流
ZipOutputStream zipOutputStream = null;
InputStream input = null;
try {
String title = "测试.zip";
response.setContentType("application/octet-stream;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(title, "UTF-8"));
out = response.getOutputStream();
zipOutputStream = new ZipOutputStream(out);
Map<String, Object> map = new LinkedHashMap<>();
List<Object> recordDtos = new ArrayList<>();
for (Object record : recordDtos) {
String dir="每个具体文件路径";
ExportMyWord emw = new ExportMyWord();
map.put("字段A", "A值");
map.put("字段B", "B值");
map.put("字段C", "C值");
String fileName = File.separator + dir + File.separator + "测试.doc";
emw.createWord(map, "demo.ftl", fileName);
try {
File file = new File(fileName);
input = new FileInputStream(file);
ZipEntry z = new ZipEntry(fileName);
zipOutputStream.putNextEntry(z);
byte[] bytes = new byte[1024 * 50];
int len = -1;
//解释这个fis.read(bytes)的意思:从读取流"读取数组长度"的数据(打印len可知),并放入数组
while ((len = input.read(bytes, 0, 1024)) != -1) {
//虽然数组长度的*5,但是这里我们设置了1024所以每次输出1024
//因为每次得到的是新的数组,所以每次都是新数组的"0-len"
zipOutputStream.write(bytes, 0, len);
}
List<Object> enclosureTS =new ArrayList<>();
for (Object complaintEnclosure : enclosureTS) {
//附件压缩到指定包结构中
}
} finally {
if (input != null) {
input.close();
}
FileUtil.clearFiles(fileName);
FileUtil.clearFiles(File.separator + dir);
}
}
zipOutputStream.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
//注意关闭顺序,否则可能文件错误
if (zipOutputStream != null) {
zipOutputStream.closeEntry();
zipOutputStream.finish();
zipOutputStream.close();
}
if (input != null) {
input.close();
}
if (out != null) {
out.close();
}
}
}
}
上面的基本可以满足 文本 图片的需要,下面是我自己的100%原创 基本想法(尝试了很多)
由于单选框和附件是属于ole 对象 操作的后的数据都是加密后的类似这样的数据
183GmgAAAAAAANgAJACQAAAAAAB9VwEACQAAA0oDAAACAFkCAAAAAAQAAAADAQgABQAAAAsCAAAA AAUAAAAMAiQA2AADAAAAHgAHAAAA/AIAAP//…
不同与图片的base64 可以编码写入、解码解析。加密方式没有找到网上资料ooxml很少。
6:单选框的写入,最后使用了笨方法,害。。
<#if whetherSolve == "0">
<pkg:part pkg:name="/word/media/image1.wmf" pkg:contentType="image/x-wmf">
<pkg:binaryData>183GmgAAAAAAANgAJACQAAAAAAB9VwEACQAAAz0DAAACAFkCAAAAAAQAAAADAQgABQAAAAsCAAAA AAUAAAAMAiQA2AADAAAAHgAHAAAA/AIAAP///wAAAAQAAAAtAQAACQAAAB0GIQDwACQA2AAAAAAA BQAAAAsCAAAAAAUAAAAMAiQA2AAFAAAAAQL///8ABQAAAC4BAAAAAAUAAAACAQEAAAAcAAAA+wLr /wAAAAAAALwCAAAAhgBAACLLzszlAH3gdeg613VAAAAAsDovAZc02HVAfeB1AAAAAAQAAAAtAQEA BQAAAAkCAAAAABcAAAAyCgcAGAAIAAQAGAAHANUAHADIq7K/veK+9hYAAAAWAAAAFgAAABYAAAAE AAAALQEBAAQAAAAtAQAACQAAAB0GIQDwABMAEwAIAAEASQAAAEAJxgCIAAAAAAATABMACAABACgA AAATAAAAEwAAAAEAAQAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//4AD//+AA/gfg APgB4ADwAOAA4ABgAOAAYADAACAAwAAgAMAAIADAACAAwAAgAMAAIADgAGAA4ABgAPAA4AD4AeAA /gfgAP//4ABZAgAAQAmGAO4AAAAAABMAEwAIAAEAKAAAABMAAAATAAAAAQAYAAAAAAB0BAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///+Pj4+Pj4+Pj4+Pj4+Pj 4+Pj4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgoP///+Pj4+Pj4/// /+Pj4+Pj4wAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgoKCgoGlpaf// /+Pj4wAAAAAAAAAAAAAAAAAAAAAAAKCgoGlpaf///wAA AAAAAAAAAAAAAP///+Pj4wAAAAAAAAAAAAAAAAAAAKCgoGlpaWlpaf///wAA AAAAAAAAAAAAAAAAAAAAAP///+Pj4+Pj4wAAAAAAAAAAAAAAAKCgoGlpaf///wAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///+Pj4wAAAAAAAAAAAAAAAKCgoGlpaf// /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///+Pj4wAAAAAAAAAAAAAAAKCgoGlpaf// /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///+Pj4wAAAAAAAAAAAAAAAKCgoGlp af///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///+Pj4wAAAAAAAAAAAAAAAKCg oGlpaWlpaf///wAAAAAAAAAAAAAAAAAAAAAAAP///+Pj4+Pj4wAAAAAAAAAAAAAA AAAAAKCgoGlpaf///wAAAAAAAAAAAAAAAP///+Pj4wAAAAAAAAAAAAAA AAAAAAAAAKCgoKCgoGlpaf///2lpaf///wAAAAAAAAAA AAAAAAAAAAAAAAAAAKCgoKCgoGlpaWlpaf///2lpaWlpaaCgoKCgoAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAKCgoKCgoGlpaWlpaWlpaWlpaWlpaWlpaaCgoKCgoAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgoKCgoKCgoKCgoKCgoKCgoAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAQAAAAnAf//AwAAAAAA</pkg:binaryData>
</pkg:part>
<pkg:part pkg:name="/word/media/image2.wmf" pkg:contentType="image/x-wmf">
<pkg:binaryData>183GmgAAAAAAANgAJACQAAAAAAB9VwEACQAAA0oDAAACAFkCAAAAAAQAAAADAQgABQAAAAsCAAAA AAUAAAAMAiQA2AADAAAAHgAHAAAA/AIAAP///wAAAAQAAAAtAQAACQAAAB0GIQDwACQA2AAAAAAA BAAAAC0BAAAJAAAAHQYhAPAAJADDAAAAFQAFAAAACwIAAAAABQAAAAwCJADYAAUAAAABAv///wAF AAAALgEAAAAABQAAAAIBAQAAABwAAAD7Auv/AAAAAAAAvAIAAACGAEAAIsvOzOUAfeB16DrXdUAA AADYei8BlzTYdUB94HUAAAAABAAAAC0BAQAFAAAACQIAAAAAFwAAADIKBwAYAAgABAAYAAcA1QAc ALK/t9a94r72FgAAABYAAAAWAAAAFgAAAAQAAAAtAQEABAAAAC0BAAAJAAAAHQYhAPAAEwATAAgA AQBJAAAAQAnGAIgAAAAAABMAEwAIAAEAKAAAABMAAAATAAAAAQABAAAAAABMAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAD///8A///gAP//4AD+B+AA+AHgAPAA4ADgAGAA4ABgAMAAIADAACAAwAAgAMAA IADAACAAwAAgAOAAYADgAGAA8ADgAPgB4AD+B+AA///gAFkCAABACYYA7gAAAAAAEwATAAgAAQAo AAAAEwAAABMAAAABABgAAAAAAHQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAA4+Pj4+Pj4+Pj4+Pj4+Pj4+PjAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAoKCg4+Pj4+Pj4+Pj4+PjAAAAAAAAAAAAAAAAAAAA AAAAAAAAoKCgoKCgaWlp4+PjAAAAAAAAAAAA AAAAAAAAAAAAoKCgaWlp4+PjAAAAAAAA AAAAAAAAAAAAoKCgaWlpaWlp4+Pj4+Pj AAAAAAAAAAAAAAAAoKCgaWlp4+Pj AAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAoKCgaWlpaWlp 4+Pj4+PjAAAAAAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAAAAAAAAAoKCgoKCgaWlp aWlpAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCgoKCgaWlpaWlp aWlpaWlpoKCgoKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCgoKCgaWlpaWlp aWlpaWlpaWlpaWlpoKCgoKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCg oKCgoKCgoKCgoKCgoKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACcB//8DAAAAAAA=</pkg:binaryData>
</pkg:part>
<pkg:part pkg:name="/word/media/image3.wmf" pkg:contentType="image/x-wmf">
<pkg:binaryData>183GmgAAAAAAANgAJACQAAAAAAB9VwEACQAAA1YDAAACAFkCAAAAAAQAAAADAQgABQAAAAsCAAAA AAUAAAAMAiQA2AADAAAAHgAHAAAA/AIAAP///wAAAAQAAAAtAQAACQAAAB0GIQDwACQA2AAAAAAA BAAAAC0BAAAJAAAAHQYhAPAAJADDAAAAFQAFAAAACwIAAAAABQAAAAwCJADYAAUAAAABAv///wAF AAAALgEAAAAABQAAAAIBAQAAABwAAAD7Auv/AAAAAAAAvAIAAACGAEAAIsvOzOUAfeB16DrXdUAA AADY2C8BlzTYdUB94HUAAAAABAAAAC0BAQAFAAAACQIAAAAADgAAADIKBwAYAAIABAAYAAcA1QAc AM60FgAAAAQAAAAtAQEAEQAAADIKBwAuAAQABAAYAAcA1QAcAL3ivvYWAAAAFgAAAAQAAAAtAQEA BAAAAC0BAAAJAAAAHQYhAPAAEwATAAgAAQBJAAAAQAnGAIgAAAAAABMAEwAIAAEAKAAAABMAAAAT AAAAAQABAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A///gAP//4AD+B+AA+AHgAPAA 4ADgAGAA4ABgAMAAIADAACAAwAAgAMAAIADAACAAwAAgAOAAYADgAGAA8ADgAPgB4AD+B+AA///g AFkCAABACYYA7gAAAAAAEwATAAgAAQAoAAAAEwAAABMAAAABABgAAAAAAHQEAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCg4+Pj4+Pj4+Pj 4+PjAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCgoKCgaWlp 4+PjAAAAAAAAAAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAAAAAoKCgaWlpaWlp 4+Pj4+PjAAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAoKCgaWlpaWlp 4+Pj4+PjAAAAAAAAAAAAAAAAAAAAoKCg aWlp4+PjAAAAAAAAAAAAAAAAAAAAAAAA oKCgoKCgaWlpaWlpAAAAAAAAAAAAAAAAAAAA AAAAAAAAoKCgoKCgaWlpaWlpaWlpaWlpoKCgoKCgAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAoKCgoKCgaWlpaWlpaWlpaWlpaWlpaWlpoKCgoKCgAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCgoKCgoKCgoKCgoKCgoKCgAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAABAAAACcB//8DAAAAAAA=</pkg:binaryData>
</pkg:part>
<#elseif whetherSolve == "1">
<pkg:part pkg:name="/word/media/image1.wmf" pkg:contentType="image/x-wmf">
<pkg:binaryData>183GmgAAAAAAANgAJACQAAAAAAB9VwEACQAAA0oDAAACAFkCAAAAAAQAAAADAQgABQAAAAsCAAAA AAUAAAAMAiQA2AADAAAAHgAHAAAA/AIAAP///wAAAAQAAAAtAQAACQAAAB0GIQDwACQA2AAAAAAA BAAAAC0BAAAJAAAAHQYhAPAAJADDAAAAFQAFAAAACwIAAAAABQAAAAwCJADYAAUAAAABAv///wAF AAAALgEAAAAABQAAAAIBAQAAABwAAAD7Auv/AAAAAAAAvAIAAACGAEAAIsvOzOUAfeB16DrXdUAA AABQ3A8BlzTYdUB94HUAAAAABAAAAC0BAQAFAAAACQIAAAAAFwAAADIKBwAYAAgABAAYAAcA1QAc AMirsr+94r72FgAAABYAAAAWAAAAFgAAAAQAAAAtAQEABAAAAC0BAAAJAAAAHQYhAPAAEwATAAgA AQBJAAAAQAnGAIgAAAAAABMAEwAIAAEAKAAAABMAAAATAAAAAQABAAAAAABMAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAD///8A///gAP//4AD+B+AA+AHgAPAA4ADgAGAA4ABgAMAAIADAACAAwAAgAMAA IADAACAAwAAgAOAAYADgAGAA8ADgAPgB4AD+B+AA///gAFkCAABACYYA7gAAAAAAEwATAAgAAQAo AAAAEwAAABMAAAABABgAAAAAAHQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAA4+Pj4+Pj4+Pj4+Pj4+Pj4+PjAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAoKCg4+Pj4+Pj4+Pj4+PjAAAAAAAAAAAAAAAAAAAA AAAAAAAAoKCgoKCgaWlp4+PjAAAAAAAAAAAA AAAAAAAAAAAAoKCgaWlp4+PjAAAAAAAA AAAAAAAAAAAAoKCgaWlpaWlp4+Pj4+Pj AAAAAAAAAAAAAAAAoKCgaWlp4+Pj AAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAoKCgaWlpaWlp 4+Pj4+PjAAAAAAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAAAAAAAAAoKCgoKCgaWlp aWlpAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCgoKCgaWlpaWlp aWlpaWlpoKCgoKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCgoKCgaWlpaWlp aWlpaWlpaWlpaWlpoKCgoKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCg oKCgoKCgoKCgoKCgoKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACcB//8DAAAAAAA=</pkg:binaryData>
</pkg:part>
<pkg:part pkg:name="/word/media/image2.wmf" pkg:contentType="image/x-wmf">
<pkg:binaryData>183GmgAAAAAAANgAJACQAAAAAAB9VwEACQAAAz0DAAACAFkCAAAAAAQAAAADAQgABQAAAAsCAAAA AAUAAAAMAiQA2AADAAAAHgAHAAAA/AIAAP///wAAAAQAAAAtAQAACQAAAB0GIQDwACQA2AAAAAAA BQAAAAsCAAAAAAUAAAAMAiQA2AAFAAAAAQL///8ABQAAAC4BAAAAAAUAAAACAQEAAAAcAAAA+wLr /wAAAAAAALwCAAAAhgBAACLLzszlAH3gdeg613VAAAAAMD4PAZc02HVAfeB1AAAAAAQAAAAtAQEA BQAAAAkCAAAAABcAAAAyCgcAGAAIAAQAGAAHANUAHACyv7fWveK+9hYAAAAWAAAAFgAAABYAAAAE AAAALQEBAAQAAAAtAQAACQAAAB0GIQDwABMAEwAIAAEASQAAAEAJxgCIAAAAAAATABMACAABACgA AAATAAAAEwAAAAEAAQAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//4AD//+AA/gfg APgB4ADwAOAA4ABgAOAAYADAACAAwAAgAMAAIADAACAAwAAgAMAAIADgAGAA4ABgAPAA4AD4AeAA /gfgAP//4ABZAgAAQAmGAO4AAAAAABMAEwAIAAEAKAAAABMAAAATAAAAAQAYAAAAAAB0BAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///+Pj4+Pj4+Pj4+Pj4+Pj 4+Pj4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgoP///+Pj4+Pj4/// /+Pj4+Pj4wAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgoKCgoGlpaf// /+Pj4wAAAAAAAAAAAAAAAAAAAAAAAKCgoGlpaf///wAA AAAAAAAAAAAAAP///+Pj4wAAAAAAAAAAAAAAAAAAAKCgoGlpaWlpaf///wAA AAAAAAAAAAAAAAAAAAAAAP///+Pj4+Pj4wAAAAAAAAAAAAAAAKCgoGlpaf///wAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///+Pj4wAAAAAAAAAAAAAAAKCgoGlpaf// /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///+Pj4wAAAAAAAAAAAAAAAKCgoGlpaf// /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///+Pj4wAAAAAAAAAAAAAAAKCgoGlp af///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///+Pj4wAAAAAAAAAAAAAAAKCg oGlpaWlpaf///wAAAAAAAAAAAAAAAAAAAAAAAP///+Pj4+Pj4wAAAAAAAAAAAAAA AAAAAKCgoGlpaf///wAAAAAAAAAAAAAAAP///+Pj4wAAAAAAAAAAAAAA AAAAAAAAAKCgoKCgoGlpaf///2lpaf///wAAAAAAAAAA AAAAAAAAAAAAAAAAAKCgoKCgoGlpaWlpaf///2lpaWlpaaCgoKCgoAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAKCgoKCgoGlpaWlpaWlpaWlpaWlpaWlpaaCgoKCgoAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgoKCgoKCgoKCgoKCgoKCgoAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAQAAAAnAf//AwAAAAAA</pkg:binaryData>
</pkg:part>
<pkg:part pkg:name="/word/media/image3.wmf" pkg:contentType="image/x-wmf">
<pkg:binaryData>183GmgAAAAAAANgAJACQAAAAAAB9VwEACQAAA0cDAAACAFkCAAAAAAQAAAADAQgABQAAAAsCAAAA AAUAAAAMAiQA2AADAAAAHgAHAAAA/AIAAP///wAAAAQAAAAtAQAACQAAAB0GIQDwACQA2AAAAAAA BAAAAC0BAAAJAAAAHQYhAPAAJADDAAAAFQAFAAAACwIAAAAABQAAAAwCJADYAAUAAAABAv///wAF AAAALgEAAAAABQAAAAIBAQAAABwAAAD7Auv/AAAAAAAAvAIAAACGAEAAIsvOzOUAfeB16DrXdUAA AABQGw8BlzTYdUB94HUAAAAABAAAAC0BAQAFAAAACQIAAAAAFAAAADIKBwAYAAYABAAYAAcA1QAc AM60veK+9hYAAAAWAAAAFgAAAAQAAAAtAQEABAAAAC0BAAAJAAAAHQYhAPAAEwATAAgAAQBJAAAA QAnGAIgAAAAAABMAEwAIAAEAKAAAABMAAAATAAAAAQABAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAD///8A///gAP//4AD+B+AA+AHgAPAA4ADgAGAA4ABgAMAAIADAACAAwAAgAMAAIADAACAA wAAgAOAAYADgAGAA8ADgAPgB4AD+B+AA///gAFkCAABACYYA7gAAAAAAEwATAAgAAQAoAAAAEwAA ABMAAAABABgAAAAAAHQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 4+Pj4+Pj4+Pj4+Pj4+Pj4+PjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA oKCg4+Pj4+Pj4+Pj4+PjAAAAAAAAAAAAAAAAAAAAAAAAAAAA oKCgoKCgaWlp4+PjAAAAAAAAAAAAAAAAAAAA AAAAoKCgaWlp4+PjAAAAAAAAAAAAAAAA AAAAoKCgaWlpaWlp4+Pj4+PjAAAAAAAA AAAAAAAAoKCgaWlp4+PjAAAA AAAAAAAAAAAAoKCgaWlp4+Pj AAAAAAAAAAAAAAAAoKCgaWlp4+Pj AAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAoKCgaWlpaWlp 4+Pj4+PjAAAAAAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAAAAAAAAAoKCgoKCgaWlp aWlpAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCgoKCgaWlpaWlp aWlpaWlpoKCgoKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCgoKCgaWlpaWlpaWlpaWlp aWlpaWlpoKCgoKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCgoKCgoKCg oKCgoKCgoKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACcB//8DAAAAAAA=</pkg:binaryData>
</pkg:part>
<#else>
<pkg:part pkg:name="/word/media/image1.wmf" pkg:contentType="image/x-wmf">
<pkg:binaryData>183GmgAAAAAAANgAJACQAAAAAAB9VwEACQAAA0oDAAACAFkCAAAAAAQAAAADAQgABQAAAAsCAAAA AAUAAAAMAiQA2AADAAAAHgAHAAAA/AIAAP///wAAAAQAAAAtAQAACQAAAB0GIQDwACQA2AAAAAAA BAAAAC0BAAAJAAAAHQYhAPAAJADDAAAAFQAFAAAACwIAAAAABQAAAAwCJADYAAUAAAABAv///wAF AAAALgEAAAAABQAAAAIBAQAAABwAAAD7Auv/AAAAAAAAvAIAAACGAEAAIsvOzOUAfeB16DrXdUAA AADQF28AlzTYdUB94HUAAAAABAAAAC0BAQAFAAAACQIAAAAAFwAAADIKBwAYAAgABAAYAAcA1QAc AMirsr+94r72FgAAABYAAAAWAAAAFgAAAAQAAAAtAQEABAAAAC0BAAAJAAAAHQYhAPAAEwATAAgA AQBJAAAAQAnGAIgAAAAAABMAEwAIAAEAKAAAABMAAAATAAAAAQABAAAAAABMAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAD///8A///gAP//4AD+B+AA+AHgAPAA4ADgAGAA4ABgAMAAIADAACAAwAAgAMAA IADAACAAwAAgAOAAYADgAGAA8ADgAPgB4AD+B+AA///gAFkCAABACYYA7gAAAAAAEwATAAgAAQAo AAAAEwAAABMAAAABABgAAAAAAHQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAA4+Pj4+Pj4+Pj4+Pj4+Pj4+PjAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAoKCg4+Pj4+Pj4+Pj4+PjAAAAAAAAAAAAAAAAAAAA AAAAAAAAoKCgoKCgaWlp4+PjAAAAAAAAAAAA AAAAAAAAAAAAoKCgaWlp4+PjAAAAAAAA AAAAAAAAAAAAoKCgaWlpaWlp4+Pj4+Pj AAAAAAAAAAAAAAAAoKCgaWlp4+Pj AAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAoKCgaWlpaWlp 4+Pj4+PjAAAAAAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAAAAAAAAAoKCgoKCgaWlp aWlpAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCgoKCgaWlpaWlp aWlpaWlpoKCgoKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCgoKCgaWlpaWlp aWlpaWlpaWlpaWlpoKCgoKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCg oKCgoKCgoKCgoKCgoKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACcB//8DAAAAAAA=</pkg:binaryData>
</pkg:part>
<pkg:part pkg:name="/word/media/image2.wmf" pkg:contentType="image/x-wmf">
<pkg:binaryData>183GmgAAAAAAANgAJACQAAAAAAB9VwEACQAAA0oDAAACAFkCAAAAAAQAAAADAQgABQAAAAsCAAAA AAUAAAAMAiQA2AADAAAAHgAHAAAA/AIAAP///wAAAAQAAAAtAQAACQAAAB0GIQDwACQA2AAAAAAA BAAAAC0BAAAJAAAAHQYhAPAAJADDAAAAFQAFAAAACwIAAAAABQAAAAwCJADYAAUAAAABAv///wAF AAAALgEAAAAABQAAAAIBAQAAABwAAAD7Auv/AAAAAAAAvAIAAACGAEAAIsvOzOUAfeB16DrXdUAA AADw2G8AlzTYdUB94HUAAAAABAAAAC0BAQAFAAAACQIAAAAAFwAAADIKBwAYAAgABAAYAAcA1QAc ALK/t9a94r72FgAAABYAAAAWAAAAFgAAAAQAAAAtAQEABAAAAC0BAAAJAAAAHQYhAPAAEwATAAgA AQBJAAAAQAnGAIgAAAAAABMAEwAIAAEAKAAAABMAAAATAAAAAQABAAAAAABMAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAD///8A///gAP//4AD+B+AA+AHgAPAA4ADgAGAA4ABgAMAAIADAACAAwAAgAMAA IADAACAAwAAgAOAAYADgAGAA8ADgAPgB4AD+B+AA///gAFkCAABACYYA7gAAAAAAEwATAAgAAQAo AAAAEwAAABMAAAABABgAAAAAAHQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAA4+Pj4+Pj4+Pj4+Pj4+Pj4+PjAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAoKCg4+Pj4+Pj4+Pj4+PjAAAAAAAAAAAAAAAAAAAA AAAAAAAAoKCgoKCgaWlp4+PjAAAAAAAAAAAA AAAAAAAAAAAAoKCgaWlp4+PjAAAAAAAA AAAAAAAAAAAAoKCgaWlpaWlp4+Pj4+Pj AAAAAAAAAAAAAAAAoKCgaWlp4+Pj AAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAoKCgaWlpaWlp 4+Pj4+PjAAAAAAAAAAAAAAAAAAAAoKCgaWlp 4+PjAAAAAAAAAAAAAAAAAAAAAAAAoKCgoKCgaWlp aWlpAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCgoKCgaWlpaWlp aWlpaWlpoKCgoKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCgoKCgaWlpaWlp aWlpaWlpaWlpaWlpoKCgoKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCg oKCgoKCgoKCgoKCgoKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACcB//8DAAAAAAA=</pkg:binaryData>
</pkg:part>
<pkg:part pkg:name="/word/media/image3.wmf" pkg:contentType="image/x-wmf">
<pkg:binaryData>183GmgAAAAAAANgAJACQAAAAAAB9VwEACQAAAzoDAAACAFkCAAAAAAQAAAADAQgABQAAAAsCAAAA AAUAAAAMAiQA2AADAAAAHgAHAAAA/AIAAP///wAAAAQAAAAtAQAACQAAAB0GIQDwACQA2AAAAAAA BQAAAAsCAAAAAAUAAAAMAiQA2AAFAAAAAQL///8ABQAAAC4BAAAAAAUAAAACAQEAAAAcAAAA+wLr /wAAAAAAALwCAAAAhgBAACLLzszlAH3gdeg613VAAAAAyHpvAJc02HVAfeB1AAAAAAQAAAAtAQEA BQAAAAkCAAAAABQAAAAyCgcAGAAGAAQAGAAHANUAHADOtL3ivvYWAAAAFgAAABYAAAAEAAAALQEB AAQAAAAtAQAACQAAAB0GIQDwABMAEwAIAAEASQAAAEAJxgCIAAAAAAATABMACAABACgAAAATAAAA EwAAAAEAAQAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//4AD//+AA/gfgAPgB4ADw AOAA4ABgAOAAYADAACAAwAAgAMAAIADAACAAwAAgAMAAIADgAGAA4ABgAPAA4AD4AeAA/gfgAP// 4ABZAgAAQAmGAO4AAAAAABMAEwAIAAEAKAAAABMAAAATAAAAAQAYAAAAAAB0BAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4/// /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgoP///+Pj4+Pj4+Pj 4+Pj4wAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgoKCgoGlpaf// /+Pj4wAAAAAAAAAAAAAAAAAAAAAAAKCgoGlpaf///wAAAAAAAAAA AAAAAP///+Pj4wAAAAAAAAAAAAAAAAAAAKCgoGlpaWlpaf///wAAAAAAAAAA AAAAAAAAAAAAAP///+Pj4+Pj4wAAAAAAAAAAAAAAAKCgoGlpaf///wAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAP///+Pj4wAAAAAAAAAAAAAAAKCgoGlpaf///wAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAP///+Pj4wAAAAAAAAAAAAAAAKCgoGlpaf///wAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///+Pj4wAAAAAAAAAAAAAAAKCgoGlpaf// /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///+Pj4wAAAAAAAAAAAAAAAKCgoGlpaWlp af///wAAAAAAAAAAAAAAAAAAAAAAAP///+Pj4+Pj4wAAAAAAAAAAAAAAAAAAAKCg oGlpaf///wAAAAAAAAAAAAAAAP///+Pj4wAAAAAAAAAAAAAAAAAAAAAA AKCgoKCgoGlpaf///2lpaf///wAAAAAAAAAAAAAAAAAA AAAAAAAAAKCgoKCgoGlpaWlpaf///2lpaWlpaaCgoKCgoAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAKCgoKCgoGlpaWlpaWlpaWlpaWlpaWlpaaCgoKCgoAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgoKCgoKCgoKCgoKCgoKCgoAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAQAAAAnAf//AwAAAAAA</pkg:binaryData>
</pkg:part>
</#if>
像你看到一样,我观察单选框是全部解决时 pkg 的数据,未解决时的数据,以及部分解决的数据,毫无规律可言,还只是一个选中效果的不同 ,只能以力破题。。。。
我就判断后直接三个作为整体展示 就解决了写入的问题。。。害
7:解析单选框(模板导出的word 底层是xml 无法用正常的poi 解析。。。。用xml 解析还行)
@Override
@Transactional(rollbackFor = Exception.class)
public Map<String, Object> getInfoInit(MultipartFile file) throws IOException {
String filename = file.getOriginalFilename();
logger.info("file name is " + filename);
String fileType = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase(Locale.US);
String uuid = UUID.randomUUID().toString();
//判断文件是不是zip类型
if (fileType.equals("zip")) {
String desPath = File.separator + uuid.replaceAll("", "");
String savePath = File.separator;
FileUtil fileUtil = new FileUtil();
FileUtil.unZip(file, desPath, savePath);
new Thread(() -> {
List<File> fileList = new ArrayList<>();
fileList = fileUtil.getSubFiles(desPath, fileList);
for (File oneFile : fileList) {
if (oneFile.getPath().contains(".doc")) {
String[] split = oneFile.getPath().split(".doc");
File wordFile = new File(split[0] + ".xml");
try {
FileUtils.copyFile(oneFile, wordFile);
} catch (IOException e) {
e.printStackTrace();
}
// 初始化xml解析工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
factory.setFeature("http://xml.org/sax/features/external-general-entities", false);
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
try {
factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
// 创建DocumentBuilder
DocumentBuilder builder = null;
try {
builder = factory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
// 创建解析xml的Document
Document doc = null;
try {
if (builder != null) {
doc = builder.parse(wordFile);
}
} catch (Exception e) {
e.printStackTrace();
}
// 递归解析Element
assert doc != null;
Element element = doc.getDocumentElement();
Node childNode = element.getElementsByTagName("w:document").item(0);
Element body = gg((Element) childNode, "w:body", 0);
Element tbl = gg(body, "w:tbl", 0);
Element tr = gg(tbl, "w:tr", 1);
Element tc = gg(tr, "w:tc", 0);
Element wp = gg(tc, "w:p", 0);
Element wr = gg(wp, "w:r", 0);
Element wt = gg(wr, "w:t", 0);
Element ATr = gg(tbl, "w:tr", 9);
String ATextContent = replaceBlank(ATr.getTextContent());
Element BTr = gg(tbl, "w:tr", 11);
String BTextContent = replaceBlank(BTr.getTextContent());
Element solveProcessTr = gg(tbl, "w:tr", 7);
Element solveProcesstc = gg(solveProcessTr, "w:tc", 1);
Element solveProcesswp = gg(solveProcesstc, "w:p", 0);
Map<String, String> ids = new HashMap<>();
Element allSolveProcesswr = gg(solveProcesswp, "w:r", 0);
Element allSolveProcessObject = gg(allSolveProcesswr, "w:object", 0);
Element allSolveProcessShape = gg(allSolveProcessObject, "v:shape", 0);
Element allSolveProcessImage = gg(allSolveProcessShape, "v:imagedata", 0);
ids.put("全部解决", allSolveProcessImage.getAttributes().getNamedItem("r:id").getTextContent());
Element partSolveProcesswp = gg(solveProcesstc, "w:p", 1);
Element partSolveProcesswr = gg(partSolveProcesswp, "w:r", 0);
Element partSolveProcessObject = gg(partSolveProcesswr, "w:object", 0);
Element partSolveProcessShape = gg(partSolveProcessObject, "v:shape", 0);
Element partSolveProcessImage = gg(partSolveProcessShape, "v:imagedata", 0);
ids.put("部分解决", partSolveProcessImage.getAttributes().getNamedItem("r:id").getTextContent());
Element noSolveProcesswp = gg(solveProcesstc, "w:p", 2);
Element noSolveProcesswr = gg(noSolveProcesswp, "w:r", 0);
Element noSolveProcessObject = gg(noSolveProcesswr, "w:object", 0);
Element noSolveProcessShape = gg(noSolveProcessObject, "v:shape", 0);
Element noSolveProcessImage = gg(noSolveProcessShape, "v:imagedata", 0);
ids.put("未解决", noSolveProcessImage.getAttributes().getNamedItem("r:id").getTextContent());
NodeList relationship = element.getElementsByTagName("Relationship");
for (int i = 0; i < relationship.getLength(); i++) {
Node childNode1 = element.getElementsByTagName("Relationship").item(i);
Node target = childNode1.getAttributes().getNamedItem("Target");
if (target.toString().contains("media/image")) {
String id = childNode1.getAttributes().getNamedItem("Id").getTextContent();
if (ids.get("全部解决").equals(id)) {
ids.put("全部解决", target.getTextContent());
}
if (ids.get("部分解决").equals(id)) {
ids.put("部分解决", target.getTextContent());
}
if (ids.get("未解决").equals(id)) {
ids.put("未解决", target.getTextContent());
}
}
}
NodeList elementsByTagName = element.getElementsByTagName("pkg:part");
String whetherSolve = null;
for (int i = 0; i < elementsByTagName.getLength(); i++) {
Node childNode1 = element.getElementsByTagName("pkg:part").item(i);
Element document22 = gg((Element) childNode1, "pkg:binaryData", 0);
String textContent = childNode1.getAttributes().getNamedItem("pkg:name").getTextContent();
if (textContent.contains("media/image")) {
if (document22.getTextContent().contains(CHECK_FLAG)) {
if (textContent.contains(ids.get("全部解决"))) {
whetherSolve = "0";
}
if (textContent.contains(ids.get("部分解决"))) {
whetherSolve = "1";
}
if (textContent.contains(ids.get("未解决"))) {
whetherSolve = "2";
}
}
}
}
FileUtil.deleteFile(wordFile);
FileUtil.deleteFile(oneFile);
} else {
//解析附件
FileUtil.clearFiles(desPath);
FileUtil.deleteFile(oneFile);
}
}
//最后要删除文件
FileUtil.clearFiles(desPath);
}).start();
}
return null;
}
private static String replaceBlank(String str) {
String dest = "";
if (str != null) {
Pattern p = Pattern.compile("\\s*|\t|\r|\n");
Matcher m = p.matcher(str);
dest = m.replaceAll("");
}
return dest;
}
private static Element gg(Element element, String tagName, int num) {
Node item = element.getElementsByTagName(tagName).item(num);
return (Element) item;
}
写不下了。。。。 书接下文: word中附件的写入与读取.