(二) POI 解析Excel 之 生成Excel文档
2016-03-08 12:36
465 查看
【一 简介】
使用POI 生成Excel 大致有以下几个步骤:
1. 创建工作薄
2. 创建sheet页
3. 创建行
4. 创建单元格
1. 创建单元格
2. 设置样式
创建单元格样式
设置单元格样式
设置字体样式
3. 设置值
5. 输出
【二 测试用例】
【1. 生成最简单的Excel】
【输出结果】
【2. POI 常用单元格样式】
【输出结果】
【3. 单元格常用数据格式】
【输出结果】
使用POI 生成Excel 大致有以下几个步骤:
1. 创建工作薄
2. 创建sheet页
3. 创建行
4. 创建单元格
1. 创建单元格
2. 设置样式
创建单元格样式
设置单元格样式
设置字体样式
3. 设置值
5. 输出
【二 测试用例】
【1. 生成最简单的Excel】
/** 测试1:生成简单的Excel 对象 */ @Test public void test_createExcel() throws Exception{ //1. 创建工作薄 Workbook wb = new HSSFWorkbook(); //2. 创建sheet页 Sheet sheet_1 = wb.createSheet("第一页"); //3. 创建行 Row row_0 = sheet_1.createRow(0); //4. 创建单元格 //1. 创建单元格 Cell cell_0_0 = row_0.createCell(0,HSSFCell.CELL_TYPE_STRING); //2. 设置样式 //创建单元格样式 CellStyle cellStyle = wb.createCellStyle(); //设置单元格样式 cellStyle.setBorderBottom(CellStyle.BORDER_THIN); // 底部边框 cellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex()); // 底部边框颜色 //设置字体样式 Font font = wb.createFont(); font.setFontName("华为行楷"); cellStyle.setFont(font); cell_0_0.setCellStyle(cellStyle); //3. 设置值 cell_0_0.setCellValue("你好,excel"); //5. 输出 FileOutputStream fos = new FileOutputStream(fileName); wb.write(fos); wb.close(); fos.close(); }
【输出结果】
【2. POI 常用单元格样式】
/** 测试二:设置单元格样式**/ @Test public void test_cellStyle() throws Exception{ //1. 创建工作薄 Workbook wb = new HSSFWorkbook(); //2. 创建sheet页 Sheet sheet_1 = wb.createSheet("第一页"); //3. 创建行 Row row_1 = sheet_1.createRow(1); //设置高度 row_1.setHeight((short)500); //4. 创建单元格 Cell cell_1_1 = row_1.createCell(1,HSSFCell.CELL_TYPE_STRING); Cell cell_1_3 = row_1.createCell(3,HSSFCell.CELL_TYPE_STRING); Cell cell_1_5 = row_1.createCell(5,HSSFCell.CELL_TYPE_STRING); Cell cell_1_7 = row_1.createCell(7,HSSFCell.CELL_TYPE_STRING); Cell cell_1_9 = row_1.createCell(9,HSSFCell.CELL_TYPE_STRING); //5. 创建样式 CellStyle cs_1_1 = wb.createCellStyle(); CellStyle cs_1_3 = wb.createCellStyle(); CellStyle cs_1_5 = wb.createCellStyle(); CellStyle cs_1_7 = wb.createCellStyle(); CellStyle cs_1_9 = wb.createCellStyle(); //1. 设置边框: *_THIN:实线, *_DASHED: 虚线 ; excel 自带颜色有限, 在IndexedColors 中定义 cs_1_1.setBorderBottom(CellStyle.BORDER_THIN); // 底部边框 cs_1_1.setBottomBorderColor(IndexedColors.BLACK.getIndex()); // 底部边框颜色 cs_1_1.setBorderLeft(CellStyle.BORDER_THIN); // 左边边框 cs_1_1.setLeftBorderColor(IndexedColors.GREEN.getIndex()); // 左边边框颜色 cs_1_1.setBorderRight(CellStyle.BORDER_THIN); // 右边边框 cs_1_1.setRightBorderColor(IndexedColors.BLUE.getIndex()); // 右边边框颜色 cs_1_1.setBorderTop(CellStyle.BORDER_MEDIUM_DASHED); // 上边边框 cs_1_1.setTopBorderColor(IndexedColors.BLACK.getIndex()); // 上边边框颜色 //2. 设置背景色 及 填充 cs_1_3.setFillBackgroundColor(IndexedColors.AQUA.getIndex()); // 背景色 cs_1_3.setFillPattern(CellStyle.BIG_SPOTS); //设置填充 //3. 设置前景色 及 填充 cs_1_5.setFillForegroundColor(IndexedColors.RED.getIndex()); // 前景色 cs_1_5.setFillPattern(CellStyle.SOLID_FOREGROUND); //设置填充 //4. 合并单元格, 并设置单元格的内容 sheet_1.addMergedRegion(new CellRangeAddress( 3, // 起始行 4, // 结束行 2, // 其实列 3 // 结束列 )); sheet_1.createRow(3).createCell(2).setCellValue("合并单元格"); //5. 设置居中并换行 cs_1_7.setAlignment(HSSFCellStyle.ALIGN_CENTER); //设置居中 cs_1_7.setWrapText(true);//设置换行 //6. 设置字体 Font font=wb.createFont(); font.setFontHeightInPoints((short)24); font.setFontName("Courier New"); font.setItalic(true); font.setStrikeout(true); cs_1_9.setFont(font); //设置单元格 cell_1_1.setCellStyle(cs_1_1); cell_1_3.setCellStyle(cs_1_3); cell_1_5.setCellStyle(cs_1_5); cell_1_7.setCellStyle(cs_1_7); cell_1_9.setCellStyle(cs_1_9); cell_1_1.setCellValue("边框"); cell_1_3.setCellValue("背景色及填充"); cell_1_5.setCellValue("前景色及填充"); cell_1_7.setCellValue("居中\n换行"); cell_1_9.setCellValue("字体样式"); //5. 输出 FileOutputStream fos = new FileOutputStream(fileName); wb.write(fos); wb.close(); fos.close(); }
【输出结果】
【3. 单元格常用数据格式】
/** 测试Excel 常见数据类型 */ @Test public void test_dataStyle() throws Exception{ //1. 创建工作薄 Workbook wb = new HSSFWorkbook(); //2. 创建sheet页 Sheet sheet_1 = wb.createSheet("第一页"); //3. 创建行 Row row_1 = sheet_1.createRow(1); //4. 创建单元格 Cell cell_1_1_string = row_1.createCell(1,HSSFCell.CELL_TYPE_STRING); Cell cell_1_3_boolean = row_1.createCell(3,HSSFCell.CELL_TYPE_BOOLEAN); Cell cell_1_5_number = row_1.createCell(5,HSSFCell.CELL_TYPE_NUMERIC); Cell cell_1_7_date = row_1.createCell(7); cell_1_1_string.setCellValue("string 类型"); cell_1_3_boolean.setCellValue(true); cell_1_5_number.setCellValue(1234); cell_1_7_date.setCellValue(new Date()); //自定义时间类型 CellStyle dateCellStyle = wb.createCellStyle(); short dateFormat = wb.createDataFormat().getFormat("yyyy-MM-dd HH:mm:ss S"); dateCellStyle.setDataFormat(dateFormat); cell_1_7_date.setCellStyle(dateCellStyle); //5. 输出 FileOutputStream fos = new FileOutputStream(fileName); wb.write(fos); wb.close(); fos.close(); }
【输出结果】
相关文章推荐
- Unity3d外包-就找北京动点软件
- iTween基础之Audio(音量和音调的变化)
- C++ 中类之间通过指针访问
- Xcode创建通用动态库 (详解)
- 天涯明月刀 题十
- 各类算法技巧核心代码,知识点归纳总结之最长公共子序列
- (一) POI 简介
- SQL Server 阻止了对组件“xp_cmdshell”的 过程“sys.xp_cmdshell”的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。
- iOS:2015年07月最新苹果IOS上架App Store商店步骤
- 防止xss攻击
- new 、delete和malloc、free的解析及区别
- ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方案
- addChildViewController与viewWillAppear、viewDidAppear关系说明
- 集训队专题(8)1003 Chinese remainder theorem again
- 李开复:我在硅谷看到了什么?
- android中Handle类的用法
- HashMap中插入null key的过程分析
- 【ROS学习】(九)ROS Network(1)
- 推荐系统简述(2)基于近邻推荐方法
- ViewHolder baseadatper封装的万能适配器