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

来源:互联网 发布:php常用的系统函数 编辑:程序博客网 时间:2024/05/17 14:29
转载于 <a target=_blank href="http://yuncode.net/code/c_50ae4105b8e0d55" target="_blank">yuncode</a>
/** * 新建一个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_16cell.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,宽度为2rowNum = 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,宽度为3colNum = 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) {}}}}

0 0
原创粉丝点击