Java POI 操作Excel 应用(一)
来源:互联网 发布:设备网络搜索使用方法 编辑:程序博客网 时间:2024/06/14 17:14
此应用是利用POI动态生成复杂表头,结果如下
首先介绍几个重要的类
org.apache.poi.hssf.usermodel.HSSFWorkbook;//工作簿org.apache.poi.hssf.usermodel.HSSFSheet; //sheet页org.apache.poi.hssf.usermodel.HSSFRow; //行org.apache.poi.hssf.usermodel.HSSFCell; //单元格
以上是创建一个Excel文档必不可少的类。
图构造:
HSSFWorkbook workBook = new HSSFWorkbook();//创建一个工作薄对象HSSFSheet sheet = workBook.createSheet("Page 1");//创建sheet页HSSFRow headRow = sheet.createRow((short) 1);//创建标题行 //设置单元格范围CellRangeAddress cra0 = new CellRangeAddress(1,(short)(7),0,0);CellRangeAddress cra1 = new CellRangeAddress(1,(short)2,(short)(1),(short)1);CellRangeAddress cra2 = new CellRangeAddress(1,(short)2,(short)(2),(short)2);CellRangeAddress cra3 = new CellRangeAddress(1,(short)2,(short)(3),(short)3);CellRangeAddress cra4 = new CellRangeAddress(1, 1, 4, 6);CellRangeAddress cra7 = new CellRangeAddress(1,(short)2,(short)(7),(short)7);CellRangeAddress cra8 = new CellRangeAddress(1,(short)2,(short)(8),(short)8); //设置边框工具类public void setBorder(CellRangeAddress cellRangeAddress, Sheet sheet, Workbook wb) throws Exception { RegionUtil.setBorderLeft(1, cellRangeAddress, sheet, wb); RegionUtil.setBorderBottom(1, cellRangeAddress, sheet, wb); RegionUtil.setBorderRight(1, cellRangeAddress, sheet, wb); RegionUtil.setBorderTop(1, cellRangeAddress, sheet, wb); }
//根据单元格范围合并单元格sheet.addMergedRegion(cra0);sheet.addMergedRegion(cra1);sheet.addMergedRegion(cra2);sheet.addMergedRegion(cra3);sheet.addMergedRegion(cra4);sheet.addMergedRegion(cra5);sheet.addMergedRegion(cra6);sheet.addMergedRegion(cra7);sheet.addMergedRegion(cra8); //设置边框 this.setBorder(cra0, sheet, workBook);this.setBorder(cra1, sheet, workBook);this.setBorder(cra2, sheet, workBook);this.setBorder(cra3, sheet, workBook);this.setBorder(cra4, sheet, workBook);this.setBorder(cra5, sheet, workBook);this.setBorder(cra6, sheet, workBook);this.setBorder(cra7, sheet, workBook);this.setBorder(cra8, sheet, workBook);ArrayList<String> fieldName = DataSource.getTableName(); for (int j = 0; j < fieldName.size(); j++) {//循环excel的标题cell = headRow.createCell(j);//使用行对象创建列对象,0表示第1列/**************对标题添加样式begin********************///设置列的宽度/sheet.setColumnWidth(j, 6000);cellStyle = workBook.createCellStyle();//创建列的样式对象//设置内容居中cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//设置列样式cell.setCellStyle(cellStyle);HSSFFont font = workBook.createFont();//创建字体对象//字体加粗font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);cellStyle.setFont(font);/**************对标题添加样式end********************/String ch_title = "三坐标";//添加样式cell.setCellType(HSSFCell.CELL_TYPE_STRING);if(fieldName.get(j) != null){//将创建好的样式放置到对应的单元格中cell.setCellStyle(cellStyle);if(j!=4&&j!=5&&j!=6){cell.setCellValue((String) fieldName.get(j));//为标题中的单元格设置值}else{ cell.setCellValue(ch_title);}}else{cell.setCellValue("-");}}headRow = sheet.createRow((short) 1);
//设置x,y,z表头for (int j = 4; j < 7; j++) {cell = headRow.createCell(j);cell.setCellValue(fieldName.get(j));cell.setCellStyle(cellStyle);}//表头下部(特征)headRow = sheet.createRow((short)(rows+4));cell = headRow.createCell(1);cell.setCellValue("特征");cell.setCellStyle(cellStyle);
下面要注意数据源转化:
对于Java开发,一般拿到的数据都是对象化的,而我们需要的是对象的属性转换为String直接写入到对应的excel单元格中。
阅读全文
0 0
- Java POI 操作Excel 应用(一)
- Java操作Excel(一)Poi简介
- Java操作Excel(一)Poi简介
- Java操作Excel(一)Poi简介
- java:Excel操作(poi)
- Java操作Excel之Poi(一)
- POI操作EXCEL(一)
- POI操作EXCEL(一)
- POI操作EXCEL(一)
- 使用POI操作Excel文件(一)
- POI操作Excel文档(一)
- 使用poi技术操作Excel(一)
- Java操作Excel Poi
- Java操作Excel Poi
- POI Java操作Excel
- java poi excel 操作
- java poi操作EXCEL
- Java操作Excel Poi
- Js是否是面向对象编程的深入理解
- Java获取配置文件的属性值通用工具类2
- Button按钮的四种点击方式
- [leetcode: Python]8.String to Integer
- 使用CAS+tomcat搭建单点登录
- Java POI 操作Excel 应用(一)
- Html5新标签datalist实现输入框跟后台数据库数据的动态匹配
- Hibernate id的generator
- python 使用MySQLdb 和 pymysql的时候手动提交事务的解决办法
- IPtables中SNAT、DNAT和MASQUERADE的含义
- Eclipse搭建Hibernate框架
- NGINX配置多域名
- Android 实现变色状态栏
- Spark java.lang.OutOfMemoryError: Java heap space