使用poi向excel中插入内容遇到的问题总结
2016-08-27 14:56
489 查看
1、如何插入图片?
在poi中有HSSFPatriarch对象,该对象为画图的顶级管理器,一个sheet只可以创建一个。它的createPicture(anchor,pictureIndex)方法可以在excel中插入一张图片。
具体代码我们可以封装成一个方法:
2、如何画线?
同样的,画线也是由HSSFPatriarch对象创建的,具体封装代码如下
3、 如何画矩形?
4、如何设置单元格换行?
5、如何进行数据格式化?
数据格式化要借助HSSFDataFormat这个类,当使用Excel内嵌的(或者说预定义)的格式时,直接用HSSFDataFormat.getBuiltinFormat静态方法即可。当使用自己定义的格式时,必须先调用HSSFDataFormat format= HSSFWorkbook.createDataFormat()。
6、如何使用公式?
7、单元格设置边框
注意单元格合并后,设置边框,并不会为其他的(未合并前)单元格设置边框,所以其他边框得自己手动补上
8、设置分页符
sheet.setRowBreak(开始行);
9、另外提供下载excel的方法:
10、提供网上一个牛人介绍poi博客地址,介绍的很详细:http://www.cnblogs.com/LiZhiW/p/4313789.html?utm_source=tuicool&utm_medium=referral
在poi中有HSSFPatriarch对象,该对象为画图的顶级管理器,一个sheet只可以创建一个。它的createPicture(anchor,pictureIndex)方法可以在excel中插入一张图片。
具体代码我们可以封装成一个方法:
public static void setPicture(Workbook wb,HSSFPatriarch patriarch,String path, int iRowStart, int iColStart, int iRowStop, int iColStop){ File file = new File(path); if(file.exists()){ ByteArrayOutputStream bos = new ByteArrayOutputStream(); //从文件中读取图片 BufferedImage bufferImage = ImageIO.read(file); //以指定格式写入输出流 ImageIO.write(bufferImage,"jpg",bos); //定义图片在excel中的位置,选取自己合适的位置坐标 HSSFClientAnchor anchor = new HSSFClientAnchor(20, 1, 1018, 0, (short) (iColStart), iRowStart, (short) (iColStop), iRowStop); //加入图片 patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); } }
2、如何画线?
同样的,画线也是由HSSFPatriarch对象创建的,具体封装代码如下
public static void drawLine(Workbook wb,HSSFPatriarch patriarch,int iRowStart, int iColStart, int iRowStop, int iColStop){ //线的位置由这个类控制 HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 350, 0, (short) (iColStart), iRowStart, (short) (iColStop), iRowStop); HSSFSimpleShape lineShape = patriarch.createSimpleShape(anchor); //画线 lineShape.setShapeType(HSSFSimpleShape.OBJECT_TYPE_LINE); }
3、 如何画矩形?
HSSFSheet sheet = workbook.createSheet("Test");// 创建工作表(Sheet) HSSFPatriarch patriarch=sheet.createDrawingPatriarch(); HSSFClientAnchor anchor = new HSSFClientAnchor(255,122, 255, 122, (short)1, 0,(short)4, 3); HSSFSimpleShape rec = patriarch.createSimpleShape(anchor); rec.setShapeType(HSSFSimpleShape.OBJECT_TYPE_RECTANGLE); rec.setLineStyle(HSSFShape.LINESTYLE_DASHGEL);//设置边框样式 rec.setFillColor(255, 0, 0);//设置填充色 rec.setLineWidth(25400);//设置边框宽度 rec.setLineStyleColor(0, 0, 255);//设置边框颜色
4、如何设置单元格换行?
CellStyle cellstyle = wb.createCellStyle(); cellstyle.setWrapText(true);//true表示自动换行
5、如何进行数据格式化?
数据格式化要借助HSSFDataFormat这个类,当使用Excel内嵌的(或者说预定义)的格式时,直接用HSSFDataFormat.getBuiltinFormat静态方法即可。当使用自己定义的格式时,必须先调用HSSFDataFormat format= HSSFWorkbook.createDataFormat()。
HSSFSheet sheet = workbook.createSheet("Test");// 创建工作表(Sheet) HSSFRow row=sheet.createRow(0); //设置日期格式--使用Excel内嵌的格式 HSSFCell cell=row.createCell(0); cell.setCellValue(new Date()); HSSFCellStyle style=workbook.createCellStyle(); style.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm")); cell.setCellStyle(style); //设置保留2位小数--使用Excel内嵌的格式 cell=row.createCell(1); cell.setCellValue(12.3456789); style=workbook.createCellStyle(); style.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00")); cell.setCellStyle(style); //设置货币格式--使用自定义的格式 cell=row.createCell(2); cell.setCellValue(12345.6789); style=workbook.createCellStyle(); style.setDataFormat(workbook.createDataFormat().getFormat("¥#,##0")); cell.setCellStyle(style); //设置百分比格式--使用自定义的格式 cell=row.createCell(3); cell.setCellValue(0.123456789); style=workbook.createCellStyle(); style.setDataFormat(workbook.createDataFormat().getFormat("0.00%")); cell.setCellStyle(style); //设置中文大写格式--使用自定义的格式 cell=row.createCell(4); cell.setCellValue(12345); style=workbook.createCellStyle(); style.setDataFormat(workbook.createDataFormat().getFormat("[DbNum2][$-804]0")); cell.setCellStyle(style); //设置科学计数法格式--使用自定义的格式 cell=row.createCell(5); cell.setCellValue(12345); style=workbook.createCellStyle(); style.setDataFormat(workbook.createDataFormat().getFormat("0.00E+00")); cell.setCellStyle(style);
6、如何使用公式?
cell.setCellType(HSSFCell.CELL_TYPE_FORMULA); cell.setCellFormula("sum(A1,C1)");
7、单元格设置边框
注意单元格合并后,设置边框,并不会为其他的(未合并前)单元格设置边框,所以其他边框得自己手动补上
curStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); // 实线右边框 curStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); // 实线右边框 curStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 实线右边框 curStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); // 实线右边框
8、设置分页符
sheet.setRowBreak(开始行);
9、另外提供下载excel的方法:
ByteArrayOutputStream bos = new ByteArrayOutputStream(); wb.write(bos); DownloadUtil.download(bos, response, " XXX.xls"); //下载函数 public static void download(ByteArrayOutputStream byteArrayOutputStream, HttpServletResponse response, String returnName) throws IOException{ response.setContentType("application/octet-stream;charset=utf-8"); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(returnName, "UTF-8")); response.setContentLength(byteArrayOutputStream.size()); ServletOutputStream outputstream = response.getOutputStream(); //取得输出流 byteArrayOutputStream.writeTo(outputstream); //写到输出流 byteArrayOutputStream.close(); //关闭 outputstream.flush(); //刷数据 }
10、提供网上一个牛人介绍poi博客地址,介绍的很详细:http://www.cnblogs.com/LiZhiW/p/4313789.html?utm_source=tuicool&utm_medium=referral
相关文章推荐
- 使用Python生成Excel格式的图片
- Excel 曝出 Power Query 安全漏洞,1.2 亿用户易受远程 DDE 攻击
- VBA将excel数据表生成JSON文件
- excel vba 限制工作表的滚动区域代码
- excel vba 高亮显示当前行代码
- C#控制Excel Sheet使其自适应页宽与列宽的方法
- SQL 导入导出Excel数据的语句
- 文本、Excel、Access数据导入SQL Server2000的方法
- C#实现Excel动态生成PivotTable
- C#基于COM方式读取Excel表格的方法
- C#导出数据到Excel文件的方法
- Vbscript生成Excel报表的常用操作总结
- C#开发教程之利用特性自定义数据导出到Excel
- C#实现导入CSV文件到Excel工作簿的方法
- C#基于NPOI生成具有精确列宽行高的Excel文件的方法
- 总提示[Microsoft][ODBC Excel Driver] 数值字段溢出官方解决方法
- C#实现DataSet内数据转化为Excel和Word文件的通用类完整实例
- C#将Sql数据保存到Excel文件中的方法
- VC6.0实现读取Excel数据的方法
- C#定制Excel界面并实现与数据库交互的方法