锁定老帖子 主题:Apache POI向excel中插入图片
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-02-16
强烈建议参考一下jXLS,POI搭配jXLS(excel的模板引擎),会达到事半功倍的效果。
1、先写模板,什么chart啊,style啊,锁定啊,等等等等,都先在模板中做好了,填充数据的地方就用expression占位。 2、准备数据。 3、渲染模板。 |
|
返回顶楼 | |
发表时间:2006-02-17
alin_ass 写道 YuLimin 写道 alin_ass 写道 poi hssf是怎么固定excel某行(不滚动)?
用HSSFSheet.createSplitPane(int colSplit, int rowSplit, int leftmostColumn, int topRow) 这个是分割工作表啊...我问的是如何固定title行 Sorry,拷贝错误代码了:( 应当是: HSSFSheet.createFreezePane(int colSplit, int rowSplit, int leftmostColumn, int topRow) or HSSFSheet.createFreezePane(int colSplit, int rowSplit) |
|
返回顶楼 | |
发表时间:2006-02-17
flyjie 写道 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-23
public HSSFClientAnchor(int dx1, int dy1, int dx2, int dy2, short col1, int row1, short col2, int row2);Creates a new client anchor and sets the top-left and bottom-right coordinates of the anchor. Parameters: dx1 - the x coordinate within the first cell. dy1 - the y coordinate within the first cell. dx2 - the x coordinate within the second cell. dy2 - the y coordinate within the second cell. col1 - the column (0 based); of the first cell. row1 - the row (0 based); of the first cell. col2 - the column (0 based); of the second cell. row2 - the row (0 based); of the second cell. 能不能解释下这些参数的意思。 我现在不知道怎么把一张图片放到特定的位置。 javadoc也不明白他说什么。 能举例说下就更好。 我不想一个参数一个参数去试呀。 |
|
返回顶楼 | |
发表时间:2006-02-23
试了几次 知道了
col1 图片的左上角放在第几个列cell, row1 图片的左上角放在第几个行cell, col2 图片的右下角放在第几个列cell, row2 图片的右下角放在第几个行cell, 可是我往一个sheet里面加 多个图片时 好像只有一张图片能被插入。 引用 // Create the drawing patriarch. This is the top level container for
// all shapes. This will clear out any existing shapes for that sheet. 这是Quick Guide 上面说的 难道不能添加多个图片么? |
|
返回顶楼 | |
发表时间:2006-02-27
dengyin2000 写道 试了几次 知道了
col1 图片的左上角放在第几个列cell, row1 图片的左上角放在第几个行cell, col2 图片的右下角放在第几个列cell, row2 图片的右下角放在第几个行cell, 可是我往一个sheet里面加 多个图片时 好像只有一张图片能被插入。 引用 // Create the drawing patriarch. This is the top level container for
// all shapes. This will clear out any existing shapes for that sheet. 这是Quick Guide 上面说的 难道不能添加多个图片么?    一个sheep是可以插入多个图片的,看以下代码: public class TestPOI { public static void main(String[] args); { FileOutputStream fileOut = null; BufferedImage bufferImg =null; BufferedImage bufferImg1 = null; try{ ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();; ByteArrayOutputStream byteArrayOut1 = new ByteArrayOutputStream();; bufferImg = ImageIO.read(new File("d:/ok.jpeg"););; bufferImg1 = ImageIO.read(new File("d:/ok1.jpeg"););; ImageIO.write(bufferImg,"jpeg",byteArrayOut);; ImageIO.write(bufferImg1,"jpeg",byteArrayOut1);; HSSFWorkbook wb = new HSSFWorkbook();; HSSFSheet sheet1 = wb.createSheet("new sheet");; //HSSFRow row = sheet1.createRow(2);; HSSFPatriarch patriarch = sheet1.createDrawingPatriarch();; HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,512,255,(short); 0,0,(short);10,10);; HSSFClientAnchor anchor1 = new HSSFClientAnchor(0,0,512,255,(short); 0,15,(short);10,20);; patriarch.createPicture(anchor , wb.addPicture(byteArrayOut.toByteArray();,HSSFWorkbook.PICTURE_TYPE_JPEG););; patriarch.createPicture(anchor1 , wb.addPicture(byteArrayOut1.toByteArray();,HSSFWorkbook.PICTURE_TYPE_JPEG););; fileOut = new FileOutputStream("d:/workbook.xls");; wb.write(fileOut);; fileOut.close();; }catch(IOException io);{ io.printStackTrace();; System.out.println("io erorr : "+ io.getMessage(););; } finally { if (fileOut != null); try { fileOut.close();; } catch (IOException e); { // TODO Auto-generated catch block e.printStackTrace();; } } } |
|
返回顶楼 | |
发表时间:2006-02-27
you are right.
我是create了多个DrawingPatriarch (sheet1.createDrawingPatriarch();) 那个document上面说的是createDrawingPatriarch的时候会This will clear out any existing shapes for that sheet. 吧。 多个pic应该share同一个DrawingPatriarch在同一个sheet里面。 |
|
返回顶楼 | |
发表时间:2006-09-04
借楼主地问一下,如何设置cell的长和宽,或都最好能根据数据动态设置。
|
|
返回顶楼 | |
发表时间:2006-10-25
列宽
sheet.setColumnWidth((short)column,(short)width); 行高 row.setHeight((short)height); |
|
返回顶楼 | |
发表时间:2007-09-16
HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,1023,255,(short) 0,0,(short)10,10);
图片放进去变形了有谁给讲讲 dx1 - the x coordinate within the first cell. dy1 - the y coordinate within the first cell. dx2 - the x coordinate within the second cell. dy2 - the y coordinate within the second cell. 这几个参数如何设 |
|
返回顶楼 | |