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

java poi操作excel文件 (新建Excel文件 添加行列、单元格)
/**
 * 新建一个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) {
			}
		}
	}
}

 转:http://yuncode.net/code/c_50ae4105b8e0d55