首页 > 编程语言 >java生成word文件

java生成word文件

时间:2023-12-18 18:32:41浏览次数:35  
标签:java String graph object 生成 Individual ontModel new word

		public boolean performFinish() {
		boolean finished = true;
		File modelFile = worldPage.getModelFile();
		String savePath = worldPage.getSaveFilePath();
		String fileName = worldPage.getFileName();
		
		ontModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
		ontModel.read(modelFile.getPath());
		ontModel.setStrictMode(false);
		localLabel = ontModel.getAnnotationProperty(METAG + "localLabel");
		
		AnnotationProperty annotationPropertyCifString = ontModel.createAnnotationProperty(METAG + "cifString");
		AnnotationProperty initialLocation = ontModel.getAnnotationProperty(METAG + "initialLocation");
		
		// TODO 获取Graph
		OntClass graph = ontModel.getOntClass(METAG + "sarva_diagram1");
		generateMetaGraph(modelFile.getPath());
		generateMetaObject(modelFile.getPath());
		
		for (Iterator il2 = graph.listInstances(); il2.hasNext();) {
			Individual karmaModel = (Individual) il2.next();
			String karmaModelName = karmaModel.getLocalName();

			Model model = new Model(graphMap.get(graph.getLocalName()));
			model.setId(karmaModelName);
			model.setLocalLabel(karmaModel.getPropertyValue(localLabel).toString());
			if (karmaModel.hasProperty(annotationPropertyCifString)) {
				model.setCifString(karmaModel.getPropertyValue(annotationPropertyCifString).toString().replace("\\\"", "\""));
			}
			modelMap.put(karmaModelName, model);
			for (Iterator ig = karmaModel.listProperties(); ig.hasNext();) {
				Statement igs = (Statement) ig.next();
				// 添加对象实例
				if (igs.getPredicate().getLocalName().equals("graphIncludingObject")) {
					obj++;
					// 找到对象实例
					List<Map<String, String>> listInfo = new ArrayList<>();
					
					
					Individual graph_object_Individual = ontModel.getIndividual(igs.getResource().getURI());
					// locallabel
					String objName = graph_object_Individual.getPropertyValue(localLabel).toString();
					Map<String,String> nameMap = new HashMap<>();
					nameMap.put("对象LocalLabel:", objName);
					listInfo.add(nameMap);
					//id 
					
					String objId = graph_object_Individual.getLocalName();
					Map<String,String> idMap = new HashMap<>();
					idMap.put("对象id:", objId);
					listInfo.add(idMap);
					
					// 对象实例属性
					for (Iterator igp = graph_object_Individual.listProperties(); igp.hasNext();) {
						Statement igps = (Statement) igp.next();
						if (igps.getPredicate().getLocalName().equals("hasProperty")) {
							// 找到对象实例属性
							Individual object_property_Individual = ontModel.getIndividual(igps.getResource().getURI());
							// 找到属性值
							String object_property_Individual_value = "";
							for (Iterator igp2 = object_property_Individual.listProperties(); igp2.hasNext();) {
								Statement igps2 = (Statement) igp2.next();
								if (igps2.getPredicate().getLocalName().equals("value")) {
									Map<String,String> shuxingNameMap = new HashMap<>();
									Map<String,String> shuxingValueMap = new HashMap<>();
									object_property_Individual_value = igps2.getString();
									String name = object_property_Individual.getPropertyValue(localLabel).toString();
									shuxingNameMap.put("属性:", name);
									shuxingValueMap.put("属性值:", object_property_Individual_value);
									listInfo.add(shuxingNameMap);
									listInfo.add(shuxingValueMap);
								}
							}
						}
					}
					saveInfo.put(objId, listInfo);
					System.out.println(saveInfo);
				}
			}
		}
		generateWord(savePath, fileName, "测试");
		return finished;
	}
  public void generateWord(String savePath,String fileName, String parameter) {
		try {
			System.out.println(saveInfo);
			System.out.println(obj);
            XWPFDocument document = new XWPFDocument();

            // 添加一个段落
            XWPFParagraph paragraph = document.createParagraph();
            XWPFRun run = paragraph.createRun();
            run.setText("对象总数: " + obj);
            int i = 1;
            for (Map.Entry<String, List<Map<String, String>>> data : saveInfo.entrySet()) {
            	run.addCarriageReturn(); // 在新行开始
            	run.setText(String.valueOf(i++));
//            	run.setText("对象id: " + data.getKey());
            	for (Map<String, String> dataList : data.getValue()) {
            	    for (Map.Entry<String, String> entry : dataList.entrySet()) {
            	        String key = entry.getKey();
            	        String value = entry.getValue();
            	        run.addCarriageReturn(); // 在新行开始
            	        run.setText(key + value);
            	    }
            	}
            }

            // 保存文件
            try (FileOutputStream out = new FileOutputStream(savePath + "/" + fileName + ".docx")) {
                document.write(out);
            }

            System.out.println("Word文件生成成功!");
        } catch (Exception e) {
            e.printStackTrace();
        }
	}

标签:java,String,graph,object,生成,Individual,ontModel,new,word
From: https://blog.51cto.com/u_16340211/8876529

相关文章

  • java生成word文件
    publicbooleanperformFinish(){ booleanfinished=true; FilemodelFile=worldPage.getModelFile(); StringsavePath=worldPage.getSaveFilePath(); StringfileName=worldPage.getFileName(); ontModel=ModelFactory.createOntologyModel(OntMo......
  • 用DE10_NANO_SOC_FB生成dts的时候 提示Component alt_vip_itc_0 of class alt_vip_itc
    当使用DE10_NANO_SOC_FB工程产生dts时提示Componentalt_vip_itc_0ofclassalt_vip_itcisunknown: 如果此时生成了dtb,可以忽略这个提示。  如果没有生成,您可以先在Qsys中把这两个器件disable掉,然后top文件里面把相关的信号也注释掉,然后重新生成soc_system.......
  • Eolink Apikit 快速发起 API 测试,一键生成测试数据
    我们在测试接口时,通常需要先创建API文档,再根据API文档生成测试用例。未创建该接口文档,仅临时调试接口,EolinkApikit支持创建API快速测试页面,输入接口相关的信息即可进行快速测试。EolinkApikit支持操作数据库,API测试时,可以一键生成测试请求数据。这可以减少数据输入步......
  • 无涯教程-Java - Dictionary 类函数
    字典(Dictionary)是一个抽象类,代表一个键/值对,其操作非常类似于Map。下面列出了Dictionary定义的抽象方法-Sr.No.Method&Remark1Enumerationelements()返回字典中包含的值的枚举。2Objectget(Objectkey)返回包含与键关联的值的对象,如果键不在字典中,则返回空对象......
  • 无涯教程-Java - Stack 类函数
    堆栈是Vector的子类,它实现了标准的后进先出堆栈。Stack()除了从其父类Vector继承的方法外,Stack还定义了以下方法-Sr.No.Method&Remark1booleanempty()测试此堆栈是否为空。如果堆栈为空,则返回true;如果堆栈包含元素,则返回false。2Objectpeek()返回位于堆栈顶部......
  • 秦疆的Java课程笔记:74 面向对象 抽象类
    abstract修饰符可以用来修饰方法,也可以用来修饰类。如果修饰方法,那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类。抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。抽象类,不能使用new关键字来创建对象,它是用来让子类继承的。抽象方法,只有方法的......
  • java rsa加解密
    坑点:用其他语言的一定注意,Java秘钥和php秘钥不同,不用混用。  packagecn.muyan.monitoragent.utils.encrypt;importsun.misc.BASE64Decoder;importsun.misc.BASE64Encoder;importjavax.crypto.Cipher;importjava.io.IOException;importjava.security.*;i......
  • jenkins发布Java项目
    1.java项目是什么(springboot)由java语言开发的后端,就是java项目前面于超老师教了大家学习了wordpress---php项目部署,提供LNMP,交给php-fpm进程去解释执行该源码jumpserver的core后端---python项目,提供python3环境,即可运行golang程序,需要安装golan编译器,编译二进制命令......
  • 无涯教程-Java - Vector 类函数
    Vector实现了动态数组。它类似于ArrayList,线程同步sychronized。以下是vector类提供的构造函数的列表。Sr.No.Constructor&Remark1Vector()此构造函数创建一个默认向量,其初始大小为10。2Vector(intsize)此构造函数接受等于所需大小的参数,并创建一个向量,其初始容......
  • 《Java编程思想第四版》学习笔记49--关于第十三章习题
    (9)增加Frog.class到本章出现的清单文件中并运行jar以创建一个包括Frog和BangBean的JAR文件。现在从SUN公司处下载并安装BDK或者使用我们自己的可激活Bean的程序构建工具并增加JAR文件到我们的环境中,因此我们可以测试两个Bean。(10)创建我们自己的包括两个属性......