锁定老帖子 主题:Apache POI向excel中插入图片
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-01-11
Images are part of the drawing support. To add an image just call createPicture() on the drawing patriarch. At the time of writing the following types are supported: PNG JPG DIB It is not currently possible to read existing images and it should be noted that any existing drawings may be erased once you add a image to a sheet. // Create the drawing patriarch. This is the top level container for // all shapes. This will clear out any existing shapes for that sheet. poi 3.0以上是支持在excel中生成三种格式的图片:PNG JPG DIB 。通过HSSFPatriarch类createPicture方法的在指定的wb中的sheet创建图片,它接受二个参数,第一个是HSSFClientAnchor,设定图片的大小( 注:由于图形的大小是用pixel计算的,而HSSFClientAnchor中长宽用的是cell中的row和column构成. 通过HSSFClientAnchor.setAnchorType(int type) )。第二个参数是要插入的图片。 HSSFPatriarch patriarch = sheet.createDrawingPatriarch();; patriarch.createPicture(anchor, HSSFPicture););; 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-01-11
一个例子的主要代码:
//先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();; BufferedImage bufferImg = ImageIO.read(new File("ok.jpg"););; ImageIO.write(bufferImg,"jpg",byteArrayOut);; //读进一个excel模版 FileInputStream fos = new FileInputStream(filePathName+"/stencil.xlt");; fs = new POIFSFileSystem(fos);; //创建一个工作薄 HSSFWorkbook wb = new HSSFWorkbook(fs);; HSSFSheet sheet = wb.getSheetAt(0);; HSSFPatriarch patriarch = sheet.createDrawingPatriarch();; HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,1023,255,(short); 0,0,(short);10,10);; patriarch.createPicture(anchor , wb.addPicture(byteArrayOut.toByteArray();,HSSFWorkbook.PICTURE_TYPE_JPEG););; |
|
返回顶楼 | |
发表时间:2006-01-11
好,楼主多发一些使用POI的经验。期待中。。。。。。
|
|
返回顶楼 | |
发表时间:2006-01-11
sendliu 写道 好,楼主多发一些使用POI的经验。期待中。。。。。。
呵呵,其实apache的文档是最详细的! 遇到什么问题到官方的doc搜一下,基本有例子的! |
|
返回顶楼 | |
发表时间:2006-01-11
poi hssf是怎么固定excel某行(不滚动)?
|
|
返回顶楼 | |
发表时间:2006-01-12
alin_ass 写道 poi hssf是怎么固定excel某行(不滚动)?
用HSSFSheet.createSplitPane(int colSplit, int rowSplit, int leftmostColumn, int topRow) |
|
返回顶楼 | |
发表时间:2006-02-11
借个地方问点问题!
是否可以设置默认的编码呢?因为要显示中文,我每个cell都要设置它的encoding,好麻烦啊 还有sheet也是一样.......... 还有字体,是否可以设置整个文档的默认字体? 谢谢 |
|
返回顶楼 | |
发表时间:2006-02-14
Morgan0916 写道 借个地方问点问题!
是否可以设置默认的编码呢?因为要显示中文,我每个cell都要设置它的encoding,好麻烦啊 还有sheet也是一样.......... 还有字体,是否可以设置整个文档的默认字体? 谢谢 设置文档的默认字体: HSSFFont font = new HSSFWorkbook();.createFont();; font.setFontHeightInPoints((short);24);; font.setFontName("宋体");; font.setItalic(true);; // Fonts are set into a style so create a new one to use. HSSFCellStyle style = wb.createCellStyle();; style.setFont(font);; for(...);{ cell.setCellStyle(style);; } 你创建了默认字体还是要设置到每个新建的cell中。另外POI创建工作表的默认编码是ENCODING_COMPRESSED_UNICODE(0)。显示中文要设置为ENCODING_UTF_16 (1); 其实你的 cell.setEncoding(HSSFCell.ENCODING_UTF_16);;放在创建cell的循环中只需写一次,何来麻烦? 字体也一样!因为POI创建工作本时并不知我们有多少row,每行有多少cell.可能我们某个cell是要显示日期格式或货币的,这样创建这个cell时还要设置它的dataformat..... |
|
返回顶楼 | |
发表时间:2006-02-14
现在POI 3.0还是alpha 1?还是05年7月发布的?
|
|
返回顶楼 | |
发表时间:2006-02-15
YuLimin 写道 alin_ass 写道 poi hssf是怎么固定excel某行(不滚动)?
用HSSFSheet.createSplitPane(int colSplit, int rowSplit, int leftmostColumn, int topRow) 这个是分割工作表啊...我问的是如何固定title行 |
|
返回顶楼 | |