poi读取Excel文件图片位置

下载最新的poi包poi-bin-3.12-20150511.zip,里面有读取xlsx图片的新方法!

上个星期开始鼓捣导入Excel,下载了最新的poi包,结果Excel文件里有图片。处理图片还真是个难事,网上搜索一开始发现了HSSFSheet类处理图片的例子,但不是xlsx文件能用的,其中对一个方HSSFSheet.getDrawingEscherAggregate()有印象。

转帖处:贴子1:http://www.cnblogs.com/shwen99/archive/2010/09/13/1824896.html

后来又找到了兼容xls和xlsx读图片位置的贴子,这个贴子就可以解决问题了。

转帖处:贴子2:http://blog.csdn.net/delongcpp/article/details/8833995

但是其中用到一个方法XSSFSheet.getRelations(),得到一个集合遍历查找,比较好奇这个集合是什么。在我的项目中试了一下发现只有一个元素,有个疑问是不是取出工作表的图片只要拿到这个集合的第一个元素就行呢(就不用写for循环遍历的代码,懒~)?上网找了官方api文档,找着找着,看到官方文档中写着XSSFSheet里有一个方法getDrawingPatriarch(),有点像贴子1那个方法,返回的结果是贴子2需要的对象。之前也所有方法都试过,印象中没有这个方法,在项目里头试了一下果然没有。于是猜是不是有新版本了,有点怀疑因为我上周才下载了最新版3.11,但还是怀着期待惊喜的心情上官网查。果然,最新版是3.12,5月11号更新!也就是昨天(这个贴子是12号写的没发表出去)!哈哈,真是刚想瞌睡的时候有人来送枕头。现在可以更方便的处理xlsx图片了!

下面是我写的一个方法:

	/**
	 * 获取单元格中的图片文件名,如果单元格内容不是图片,则返回null。
	 * 
	 * @param sheet
	 *            工作表
	 * @param cell
	 *            单元格
	 * @return 图片文件名
	 */
	public static String getPictureNameOfCell(Sheet sheet, Cell cell) {
		int cellRowIndex = cell.getRowIndex();
		int cellColIndex = cell.getColumnIndex();
		if (sheet instanceof XSSFSheet) {
			XSSFSheet xSheet = (XSSFSheet) db.getSheet();
			XSSFDrawing drawing = xSheet.getDrawingPatriarch();
			List<XSSFShape> xShapeList = drawing.getShapes();
			for (int i = 0; i < xShapeList.size(); i++) {
				XSSFPicture xPicture = (XSSFPicture) xShapeList.get(i);
				XSSFClientAnchor xAnchor = xPicture.getPreferredSize();
				if (xAnchor.getRow1() == cellRowIndex && xAnchor.getCol1() == cellColIndex) {
					return xPicture.getPictureData().getPackagePart().getPartName().getName();
				}
			}
		}
		return null;
	}
时间: 2024-10-08 09:49:58

poi读取Excel文件图片位置的相关文章

使用Apache POI 读取Excel文件

生活中用到用到Excel文件的情况很多,什么商品进货单,产品维修单,餐厅的营业额等等.作为程序员,我们该如何读取Excel文件,获取我们想要的资源呢.本篇将讲解如何使用Apache POI读取Excel文件. 准备工作: 1)Apache POI 开发jar包 2)Excel资源文件,包括Excel2003,Excel2007这两种版本分别对应xls.xlsx文件. 本篇已经为您做好准备工作,请点击此处,下载资源文件,你也可以浏览Apace POI官网了解更多详细信息. 简要流程: 获取Work

使用POI 读取 Excel 文件,读取手机号码 变成 1.3471022771E10

使用POI 读取 Excel 文件,读取手机号码 变成 1.3471022771E10 [问题点数:40分,结帖人xieyongqiu] 不显示删除回复             显示所有回复             显示星级回复             显示得分回复             只显示楼主           收藏 关注 xieyongqiu maobingxixi 本版等级: 结帖率:71.43% 楼主发表于: 2010-09-13 17:33:03 使用POI 读取 Excel 

使用jxl,poi读取excel文件

作用:在java后台添加一个方法,读取导入的excel内容,根据需要返回相应的sql语句,以完成对临时表的插入操作. 使用jxl读取excel文件 package com.sixthf.bi.sapp.util; import java.io.IOException; import java.io.InputStream; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import org.a

java利用poi读取Excel文件

java读取Excel文件,笔者认为:从结构上来看,Excel文件是由一个一个的单元格组成的,有点像细胞cell,逐行的排列.那么我们读的时候也应该逐行逐行的读,从左到右的寻找每一个cell.一.实例代码: 只是实现了一种方式,因为依照读取内容的不同,读取的后想要的操作不同,因此不能苟同全部,只是方法是相通的.说道Excel文件的结构,这货从数学的角度来说,绝对是一个二维数组,因此我就拿字符串二维数组接受读取后的内容,并每个单元格每个单元格的打印.当然也可以返回三维数组(包含该单元格的位置坐标)

使用poi读取excel文件 Cannot get a text value from a numeric cell

我这样转换得到一个excel文本域的值 Cell cell = row.getCell(c); cell.setCellType(Cell.CELL_TYPE_STRING); String parkName = cell.getStringCellValue(); 某些时候,读取 excel 文件会出现如下错误 java.lang.IllegalStateException: Cannot get a text value from a numeric cell at org.apache.p

java poi读取excel文件

poi-3.9-20121203.jar poi-ooxml-3.9-20121203.jar poi-ooxml-schemas-3.9-20121203.jar stax-api-1.0.1.jar xmlbeans-2.3.0.jar 上面几个jar包缺一不可,有时候会出现ClassNotFound之类的错误,是因为jar缺少或不兼容的原因,上面jar包已经过测试,可以使用. 读取excel文件代码如下: public class ExcelUtils {// 对外提供读取excel文件的

使用poi读取Excel文件数据

除分数被转换为小数存储外,其他数据经本人测试无问题,如发现问题请留言,方便及时更新 package com.haiyisoft.iecp.util; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.text.DateFormat;

java poi 读取excel文件随笔

需求:最近的项目需要将app的上传菜品功能移到pc端来实现,主要难点就是图片的批量导入,因为现在的框架是公司自己开发的,我实在不敢恭维,上传文件我用js传到服务器,在后台来读....  为什么传到服务器,因为现在浏览器的安全性提高之后,input file 获取不到真实的绝对地址.... jar:poi-3.12.jar    poi-ooxml-3.12.jar  poi-ooxml-schemas-3.8-20120326.jar  xmlbeans-2.3.0.jar 没用同版本的是因为之

POI 读取Excel文件,将Excel数据导入数据库

/** * 读取Excel单元格所显示的字符串(显示什么就返回什么) * 创建人:minlorry * 创建日期:2015-07-31 * 更新日期:2015-07-31 * 更新说明:生硬地处理了数值单元格的处理,日期单元格未作处理. * @param cell Excel单元格 * @return String 单元格显示的字符串 */ public static String getStringValue(Cell cell) { String stringValue = "";