0 0

POI处理excel后,原来的内置内嵌对象(embed object)就打不开了 -- 在POI官方没找到方案。5

POI处理excel后,原来的内置内嵌对象(embed object)就打不开了 -- 在POI官方没找到方案。用excel打开内嵌对象时,报错 "cannot start the source application for this object".

I've tried both poi3.6 poi3.7 and poi3.8. it's NOT working.

简单的代码段:
//read the temaplate excel with embed object
String filePathIn = "templdate.xls";
fs = new POIFSFileSystem(new FileInputStream(filePathIn));
HSSFWorkbook wb = new HSSFWorkbook(fs);  
//write the templdate excel into output file
String filePathOut="out.xls";
FileOutputStream fileOut = new FileOutputStream(filePathOut);
wb.write(fileOut);  
fileOut.close();

大家看看,谢谢

3个答案 按时间排序 按投票排序

0 0

poi的操作实例可参考以下官方文档
http://poi.apache.org/spreadsheet/quick-guide.html
Embedded Objects部分在最后面

2012年8月23日 09:50
0 0

通过下面代码获取excel中的内嵌对象

            for (HSSFObjectData obj : wb.getAllEmbeddedObjects()) 
            { //the OLE2 Class Name of the object 
            	String oleName = obj.getOLE2ClassName(); 
            	if (oleName.equals("Worksheet")) 
            	{ 
            		DirectoryNode dn = (DirectoryNode) obj.getDirectory();
            		HSSFWorkbook embeddedWorkbook = new HSSFWorkbook(dn, fs, false); 
            		//System.out.println(entry.getName() + ": " + embeddedWorkbook.getNumberOfSheets()); 
            	} 
            	else if (oleName.equals("Document")) 
            	{ 
            		DirectoryNode dn = (DirectoryNode) obj.getDirectory(); 
            		HWPFDocument embeddedWordDocument = new HWPFDocument(dn, fs); 
            		//System.out.println(entry.getName() + ": " + embeddedWordDocument.getRange().text()); 
            	} 
            	else if (oleName.equals("Presentation")) 
            	{ 
            		DirectoryNode dn = (DirectoryNode) obj.getDirectory(); 
            		SlideShow embeddedPowerPointDocument = new SlideShow(new HSLFSlideShow(dn, fs)); 
            		//System.out.println(entry.getName() + ": " + embeddedPowerPointDocument.getSlides().length); 
            	} 
            	else
            	{ 
            		if(obj.hasDirectoryEntry())
            		{ 
            			// The DirectoryEntry is a DocumentNode. Examine its entries to find out what it is 
            			DirectoryNode dn = (DirectoryNode) obj.getDirectory(); 
            			for (Iterator entries = dn.getEntries(); entries.hasNext();) 
            			{ 
            				Entry entry = (Entry) entries.next(); 
            				//System.out.println(oleName + "." + entry.getName()); 
            			} 
            		} 
            		else
            		{ // There is no DirectoryEntry // Recover the object's data from the HSSFObjectData instance. 
            			byte[] objectData = obj.getObjectData(); 
            		} 
            	} 
            }

2012年8月23日 09:46
0 0

那就可能是POI的BUG,试试JXL

2012年8月22日 19:31

相关推荐

    poi excel poi excel poi excel

    ### POI Excel知识点详解 #### 一、Jakarta POI简介与Apache POI的作用 Jakarta POI 是 Apache POI 的早期项目名称,它提供了一组 API 来处理 Microsoft Office 文件格式,特别是针对 Excel(`.xls` 和 `.xlsx`)...

    apache POI 导出Excel 设置打印

    Apache POI 是一个开源库,专门用于处理Microsoft Office格式的文件,包括Excel。在Java开发中,Apache POI 提供了API,使我们能够创建、修改和读取Excel文档。当我们需要导出Excel并设置打印参数时,Apache POI ...

    POI生成Excel POI操作Excel POI读取Excel POI类库

    Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,尤其是Excel。在这个场景中,我们关注的是如何使用POI来创建、读取和操作Excel文档。在Web项目中,这种功能通常用于数据导入导出,报表生成...

    poi全家桶ooxml-schemas/poi/poi-examples/poi-ooxml/poi-ooxml-schemas/poi-scratchpad

    标题中的"poi全家桶ooxml-schemas/poi/poi-examples/poi-ooxml/poi-ooxml-schemas/poi-scratchpad"提及的是Apache POI项目中的多个关键组件和目录结构。Apache POI是一个开源的Java库,专门用于读写Microsoft Office...

    java_poi实现excel导入导出

    要使用 Java POI 实现 Excel 导出,需要首先创建一个 HSSFWorkbook 或 XSSFWorkbook 对象,然后使用该对象创建一个工作表。下面是一个简单的示例: ```java import org.apache.poi.hssf.usermodel.HSSFWorkbook; ...

    POI导出Excel文件

    总结起来,Apache POI为Java开发者提供了一种强大且灵活的方式来处理Excel文件,无论是通过Servlet从服务器生成文件,还是在本地通过main方法创建文件。理解如何使用POI库可以帮助你更好地集成Excel功能到你的Java...

    java poi处理excel数据

    7. **异常处理**:在处理Excel文件时,可能出现文件不存在、格式不正确、内存溢出等问题,需要适当地捕获并处理异常。 通过以上知识点的学习和实践,你将能够熟练地利用Java POI进行Excel数据的处理,无论是数据...

    POI的EXCEL导出,自动换行

    - **兼容性问题**:虽然Apache POI支持多种Excel版本,但在实际使用过程中可能会遇到一些兼容性问题,特别是在处理某些特殊格式或功能时。因此,在正式部署前进行全面的测试是非常重要的。 - **性能优化**:当处理...

    POI处理 excel2007

    ### POI处理 Excel 2007:详细解析与示例代码分析 #### 一、概述 Apache POI 是一个用于读写 Microsoft Office 格式文件的 Java API,包括 Excel、Word 和 PowerPoint 等。POI 提供了对 `.xls`(Excel 97-2003)和...

    Java实现Excel读写的poi 5.2.1版本jar

    `poi-scratchpad-5.2.1.jar`:这部分包含了一些实验性的或不稳定的API,通常用于测试新特性或非标准的Excel格式。 `commons-compress-1.21.jar`:Apache Commons Compress库提供了多种压缩算法,POI使用它来处理...

    poi excel转换成bean

    标题“poi excel转换成bean”涉及到的关键技术是使用Apache POI从Excel文件中读取数据并将其映射到Java Bean对象中。这个过程在处理大量结构化数据时特别有用,例如导入数据库或进行数据分析。 首先,我们需要理解...

    使用poi生成Excel所需要的jar包

    1. **导入所需库**:在Java项目中,你需要将POI-3.9.jar添加到类路径中,这样就可以使用Apache POI提供的类和方法。 2. **创建Workbook对象**:Workbook是Excel文件的抽象表示。对于XLS文件,你可以创建...

    POI向excel中插入图片

    - 在处理大量图片时,考虑内存管理,因为POI会将整个工作簿加载到内存中。 以上就是使用Apache POI向Excel中插入图片的详细过程。实践中,你可以根据具体需求进行调整,例如动态插入多张图片或者在循环中批量处理。...

    poi-3.9 使用poi技术处理Excel表导入、导出的包

    - 在处理Excel文件时,需要捕获可能抛出的IOException和其他特定于POI的异常,如InvalidFormatException。 11. **兼容性**: - 虽然3.9版本较旧,但依然可以处理大部分Excel文件。然而,对于更复杂的功能或新特性...

    利用POI读取excel写入到word

    在IT行业中,Apache POI是一个广泛使用的开源库,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。本篇文章将详细讲解如何利用Apache POI库来读取Excel数据并将其写入到Word文档中。 首先,...

    poi读写excel+poi总结

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,包括Excel、Word和PowerPoint等。在本文中,我们将深入探讨如何使用POI进行Excel的读写操作,并进行总结。 1. POI基本概念 Apache POI 提供了...

    java的poi生成excel图表demo

    在本示例中,我们将深入探讨如何利用POI库来生成Excel中的图表曲线,这对于数据可视化和报告生成非常有用。 1. **Apache POI介绍** Apache POI是一个开源项目,提供了API来处理Microsoft Office格式的文件。在Java...

    POI导出Excel表格

    在Java编程领域,Apache POI是一个非常流行的库,它允许开发者读取、写入和修改Microsoft Office格式的文件,特别是Excel工作簿(.xls或.xlsx)。在这个“POI导出Excel表格”的实例中,我们将深入探讨如何利用Apache...

    Apache poi 操作 excel 文件压缩包

    7. **poi-scratchpad**: 这个模块包含了一些实验性的和不稳定的API,开发者可以在这里找到一些尚未稳定但可能有用的特性。 使用这些库,你可以实现以下功能: - 创建新的Excel文件。 - 读取现有Excel文件的数据。 -...

    POI处理excel

    Apache POI是一个流行的开源库,主要用于处理Microsoft Office格式的文件,包括Excel(XLS和XLSX)。在Java开发环境中,POI为开发者提供了一种高效且灵活的方式来读取、写入以及修改Excel电子表格。在本文中,我们将...

Global site tag (gtag.js) - Google Analytics