您的位置:首页 > 其它

(二) POI 解析Excel 之 生成Excel文档

2016-03-08 12:36 465 查看
【一 简介】

使用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();
}


【输出结果】

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: