用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

java poi操作excel文件 (新建Excel文件 添加行列、单元格)

2012-11-22 作者: 程序猿style举报

[java]代码库

/**
 * 新建一个Excel文件,里面添加5行5列的内容,再添加两个高度为2的大单元格。
 *
 * @param fileName
 */
public void writeExcel(String fileName) {
 
    // 目标文件
    File file = new File(fileName);
    FileOutputStream fOut = null;
    try {
        // 创建新的Excel 工作簿
        HSSFWorkbook workbook = new HSSFWorkbook();
 
        // 在Excel工作簿中建一工作表,其名为缺省值。
        // 也可以指定工作表的名字。
        HSSFSheet sheet = workbook.createSheet("Test_Table");
 
        // 创建字体,红色、粗体
        HSSFFont font = workbook.createFont();
        font.setColor(HSSFFont.COLOR_RED);
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
 
        // 创建单元格的格式,如居中、左对齐等
        HSSFCellStyle cellStyle = workbook.createCellStyle();
        // 水平方向上居中对齐
        cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        // 垂直方向上居中对齐
        cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        // 设置字体
        cellStyle.setFont(font);
 
        // 下面将建立一个4行3列的表。第一行为表头。
        int rowNum = 0;// 行标
        int colNum = 0;// 列标
        // 建立表头信息
        // 在索引0的位置创建行(最顶端的行)
        HSSFRow row = sheet.createRow((short) rowNum);
        // 单元格
        HSSFCell cell = null;
        for (colNum = 0; colNum < 5; colNum++) {
            // 在当前行的colNum列上创建单元格
            cell = row.createCell((short) colNum);
 
            // 定义单元格为字符类型,也可以指定为日期类型、数字类型
            cell.setCellType(HSSFCell.CELL_TYPE_STRING);
            // 定义编码方式,为了支持中文,这里使用了ENCODING_UTF_16
            cell.setEncoding(HSSFCell.ENCODING_UTF_16);
            // 为单元格设置格式
            cell.setCellStyle(cellStyle);
 
            // 添加内容至单元格
            cell.setCellValue("表头名-" + colNum);
        }
        rowNum++;
        for (; rowNum < 5; rowNum++) {
            // 新建第rowNum行
            row = sheet.createRow((short) rowNum);
            for (colNum = 0; colNum < 5; colNum++) {
                // 在当前行的colNum位置创建单元格
                cell = row.createCell((short) colNum);
                cell.setEncoding(HSSFCell.ENCODING_UTF_16);
                cell.setCellStyle(cellStyle);
                cell.setCellValue("值-" + rowNum + "-" + colNum);
            }
        }
 
        // 合并单元格
        // 先创建2行5列的单元格,然后将这些单元格合并为2个大单元格
        rowNum = 5;
        for (; rowNum < 7; rowNum++) {
            row = sheet.createRow((short) rowNum);
            for (colNum = 0; colNum < 5; colNum++) {
                // 在当前行的colNum位置创建单元格
                cell = row.createCell((short) colNum);
            }
        }
        // 建立第一个大单元格,高度为2,宽度为2
        rowNum = 5;
        colNum = 0;
        Region region = new Region(rowNum, (short) colNum, (rowNum + 1),
                (short) (colNum + 1));
        sheet.addMergedRegion(region);
        // 获得第一个大单元格
        cell = sheet.getRow(rowNum).getCell((short) colNum);
        cell.setEncoding(HSSFCell.ENCODING_UTF_16);
        cell.setCellStyle(cellStyle);
        cell.setCellValue("第一个大单元格");
 
        // 建立第二个大单元格,高度为2,宽度为3
        colNum = 2;
        region = new Region(rowNum, (short) colNum, (rowNum + 1),
                (short) (colNum + 2));
        sheet.addMergedRegion(region);
        // 获得第二个大单元格
        cell = sheet.getRow(rowNum).getCell((short) colNum);
        cell.setEncoding(HSSFCell.ENCODING_UTF_16);
        cell.setCellStyle(cellStyle);
        cell.setCellValue("第二个大单元格");
 
        // 工作薄建立完成,下面将工作薄存入文件
        // 新建一输出文件流
        fOut = new FileOutputStream(file);
        // 把相应的Excel 工作簿存盘
        workbook.write(fOut);
        fOut.flush();
        // 操作结束,关闭文件
        fOut.close();
 
        System.out
                .println("Excel文件生成成功!Excel文件名:" + file.getAbsolutePath());
    } catch (Exception e) {
        System.out
                .println("Excel文件" + file.getAbsolutePath() + "生成失败:" + e);
    } finally {
        if (fOut != null) {
            try {
                fOut.close();
            } catch (IOException e1) {
            }
        }
    }
}


网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...