ExcelStyle

package com.wyj.excel.test;

import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.CellRangeAddress;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Comment;
import org.apache.poi.ss.usermodel.Drawing;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.RichTextString;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;

/**
 * excel的样式
 * 
 * @author 王宜君
 */
public class ExcelStyle
{
    /**
     * 设置2003excel头部样式
     * @param workbook 工作表
     * @param style 样式
     * @return
     */
    public static HSSFCellStyle setHeadStyle( HSSFWorkbook workbook,
            HSSFCellStyle style )
    {

        style.setFillForegroundColor( HSSFColor.SKY_BLUE.index );
        style.setFillPattern( HSSFCellStyle.SOLID_FOREGROUND );
        style.setBorderBottom( HSSFCellStyle.BORDER_THIN );
        style.setBorderLeft( HSSFCellStyle.BORDER_THIN );
        style.setBorderRight( HSSFCellStyle.BORDER_THIN );
        style.setBorderTop( HSSFCellStyle.BORDER_THIN );
        style.setAlignment( HSSFCellStyle.ALIGN_CENTER );
        // 生成字体
        HSSFFont font = workbook.createFont();
        font.setColor( HSSFColor.VIOLET.index );
        font.setFontHeightInPoints( (short)12 );
        font.setBoldweight( HSSFFont.BOLDWEIGHT_BOLD );
        // 把字体应用到当前的样样式
        style.setFont( font );
        return style;

    }
    public static CellStyle setHeadStyle( Workbook workbook )
    {
        // 生成一个样式
        CellStyle style = workbook.createCellStyle();
        // 设置这些样式
        style.setFillForegroundColor( HSSFColor.SKY_BLUE.index );
        style.setFillPattern( XSSFCellStyle.SOLID_FOREGROUND );
        style.setBorderBottom( XSSFCellStyle.BORDER_THIN );
        style.setBorderLeft( XSSFCellStyle.BORDER_THIN );
        style.setBorderRight( XSSFCellStyle.BORDER_THIN );
        style.setBorderTop( XSSFCellStyle.BORDER_THIN );
        style.setAlignment( XSSFCellStyle.ALIGN_CENTER );
        style.setVerticalAlignment( XSSFCellStyle.VERTICAL_CENTER );
        // 生成一个字体
        Font font = workbook.createFont();
        font.setColor( HSSFColor.VIOLET.index );
        font.setFontHeightInPoints( (short)12 );
        font.setBoldweight( XSSFFont.BOLDWEIGHT_BOLD );
        // 把字体应用到当前的样式
        style.setFont( font );        
        return style;
    }
    /**
     * 设置2003和2007excel体部样式
     * @param workbook 工作表
     * @return 样式
     */
    public static CellStyle setBodyStyle( Workbook workbook )
    {   
        // 生成并设置另一个样式
        CellStyle style = workbook.createCellStyle();
        
        style.setFillForegroundColor( HSSFColor.LIGHT_YELLOW.index );
        style.setFillPattern( XSSFCellStyle.SOLID_FOREGROUND );
        style.setBorderBottom( XSSFCellStyle.BORDER_THIN );
        style.setBorderLeft( XSSFCellStyle.BORDER_THIN );
        style.setBorderRight( XSSFCellStyle.BORDER_THIN );
        style.setBorderTop( XSSFCellStyle.BORDER_THIN );
        style.setAlignment( XSSFCellStyle.ALIGN_CENTER );
        style.setVerticalAlignment( XSSFCellStyle.VERTICAL_CENTER );
        // 生成另一个字体
        Font font = workbook.createFont();
        font.setBoldweight( XSSFFont.BOLDWEIGHT_NORMAL );
        // 把字体应用到当前的样式
        style.setFont( font );
        return style;
        
    }
    /**
     * 设置excel标题的注释
     * @param sheet 工作表
     * @param regions 合并区域
     * @param extension 扩展名
     */
    public static void setComment(Sheet sheet,List<CellRangeAddress> regions,String extension)
    {
        // 声明一个画图的顶级管理器
        Drawing patriarch = sheet.createDrawingPatriarch();

        // 设置合并单元格
        if ( regions != null && regions.size() > 0 )
        {
            for ( int i = 0; i < regions.size(); i++ )
            {
                sheet.addMergedRegion( regions.get( i ) );// 指定合并区域
            }
        }
        // sheet.addMergedRegion(new Region(1,(short)0,3,(short)0));//指定合并区域
        Comment comment = null;
        RichTextString richText = null;
        
        if ( "xls".equals( extension ) )
        {
            // 定义注释的大小和位置,详见文档
            // patriarch.createCellComment(arg0)
            comment = patriarch.createCellComment( new HSSFClientAnchor( 0, 0,
                    0, 0, (short)4, 2, (short)6, 5 ) );
            richText = new HSSFRichTextString( "可以在POI中添加注释!" );
        } else if ( "xlsx".equals( extension ) )
        {
            comment = patriarch.createCellComment( new XSSFClientAnchor( 0, 0,
                    0, 0, (short)4, 2, (short)6, 5 ) );
            richText = new XSSFRichTextString( "可以在POI中添加注释!" );
        }

        // 设置注释内容
        comment.setString( richText );
        // 设置注释作者,当鼠标移动到单元格上是可以在状态栏中看到该内容.
        comment.setAuthor( "leno" );
    }
    /**
     * 设置2003的体部样式
     * @param workbook 工作表
     * @param style  单元格样式
     * @return
     */
    public static HSSFCellStyle setbodyStyle( HSSFWorkbook workbook,
            HSSFCellStyle style )
    {
        style.setFillForegroundColor( HSSFColor.LIGHT_YELLOW.index );
        style.setFillPattern( HSSFCellStyle.SOLID_FOREGROUND );
        style.setBorderBottom( HSSFCellStyle.BORDER_THIN );
        style.setBorderLeft( HSSFCellStyle.BORDER_THIN );
        style.setBorderRight( HSSFCellStyle.BORDER_THIN );
        style.setBorderTop( HSSFCellStyle.BORDER_THIN );
        style.setAlignment( HSSFCellStyle.ALIGN_CENTER );
        style.setVerticalAlignment( HSSFCellStyle.VERTICAL_CENTER );
        // 生成字体
        HSSFFont font = workbook.createFont();
        font.setBoldweight( HSSFFont.BOLDWEIGHT_NORMAL );
        // 把字体应用到当前的样样式
        style.setFont( font );
        return style;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值