使用POI生成Excel文件

在开发中经常需要用到对Excel文件的操作,现在根据网上的资料整理如下:


import java.io.FileOutputStream;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFComment;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;

public class PoiCreateExcelTest ...{
    
public static void main(String[] args) ...{
        
/** *//**
          *
@see <a href="http://poi.apache.org/hssf/quick-guide.html#NewWorkbook">For more</a>
         
*/        
        
// 创建新的Excel 工作簿
         HSSFWorkbook workbook = new HSSFWorkbook();
        
        
// 在Excel工作簿中建一工作表,其名为缺省值, 也可以指定Sheet名称
         HSSFSheet sheet = workbook.createSheet();
        
//HSSFSheet sheet = workbook.createSheet("SheetName");
        
        
// 用于格式化单元格的数据
         HSSFDataFormat format = workbook.createDataFormat();
        
        
// 创建新行(row),并将单元格(cell)放入其中. 行号从0开始计算.
         HSSFRow row = sheet.createRow((short) 1);

        
// 设置字体
         HSSFFont font = workbook.createFont();
         font.setFontHeightInPoints((
short) 20); //字体高度
         font.setColor(HSSFFont.COLOR_RED); //字体颜色
         font.setFontName("黑体"); //字体
         font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //宽度
         font.setItalic(true); //是否使用斜体
//         font.setStrikeout(true); //是否使用划线

        
// 设置单元格样式

         HSSFCellStyle cellStyle = workbook.createCellStyle();
         cellStyle.setFont(font);
         cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
//水平布局:居中

// 设置单元格的文本方式为可多行编写方式
cellStyle.setWrapText(true);

// 设置单元格的填充方式,以及前景颜色和背景颜色
// 三点注意:
// 1.如果需要前景颜色或背景颜色,一定要指定填充方式,两者顺序无所谓;
// 2.如果同时存在前景颜色和背景颜色,前景颜色的设置要写在前面;
// 3.前景颜色不是字体颜色。
cellStyle.setFillPattern(HSSFCellStyle.DIAMONDS);
cellStyle.setFillForegroundColor(HSSFColor.RED.index);
cellStyle.setFillBackgroundColor(HSSFColor.LIGHT_YELLOW.index);

// 设置单元格底部的边框及其样式和颜色
// 这里仅设置了底边边框,左边框、右边框和顶边框同理可设
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_SLANTED_DASH_DOT);
cellStyle.setBottomBorderColor(HSSFColor.DARK_RED.index);


        
        
// 添加单元格注释
        
// 创建HSSFPatriarch对象,HSSFPatriarch是所有注释的容器.
         HSSFPatriarch patr = sheet.createDrawingPatriarch();
        
// 定义注释的大小和位置,详见文档
         HSSFComment comment = patr.createComment(new HSSFClientAnchor(0, 0, 0, 0, (short)4, 2, (short) 6, 5));
        
// 设置注释内容
         comment.setString(new HSSFRichTextString("可以在POI中添加注释!"));
        
// 设置注释作者. 当鼠标移动到单元格上是可以在状态栏中看到该内容.
         comment.setAuthor("Xuys.");
        
        
// 创建单元格
         HSSFCell cell = row.createCell((short) 1);
         HSSFRichTextString hssfString
= new HSSFRichTextString("Hello World!");
         cell.setCellValue(hssfString);
//设置单元格内容
         cell.setCellStyle(cellStyle);//设置单元格样式
         cell.setCellType(HSSFCell.CELL_TYPE_STRING);//指定单元格格式:数值、公式或字符串
         cell.setCellComment(comment);//添加注释

        
//格式化数据
         row = sheet.createRow((short) 2);
         cell
= row.createCell((short) 2);
         cell.setCellValue(
11111.25);
         cellStyle
= workbook.createCellStyle();
         cellStyle.setDataFormat(format.getFormat(
"0.0"));
         cell.setCellStyle(cellStyle);

         row
= sheet.createRow((short) 3);
         cell
= row.createCell((short) 3);
         cell.setCellValue(
9736279.073);
         cellStyle
= workbook.createCellStyle();
         cellStyle.setDataFormat(format.getFormat(
"#,##0.0000"));
         cell.setCellStyle(cellStyle);
        
        
         sheet.autoSizeColumn((
short)0); //调整第一列宽度
         sheet.autoSizeColumn((short)1); //调整第二列宽度
         sheet.autoSizeColumn((short)2); //调整第三列宽度
         sheet.autoSizeColumn((short)3); //调整第四列宽度

        
try ...{
             FileOutputStream fileOut
= new FileOutputStream("C:/3.xls");
             workbook.write(fileOut);
             fileOut.close();
         }
catch (Exception e) ...{
             System.out.println(e.toString());
         }

     }


}



最后自动调整列宽的代码是在找了好久以后不经意间找着的,很惊喜!
如果编译器提示没有autoSizeColumn这个方法,那可能是你的poi版本太低的缘故,我用的是poi3.0版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值