Apache POI – セルにフォントを指定したコメントを設定するには


セルにフォントを指定したコメントを設定するには、フォントを指定したHSSFRichTextStringクラスで定義したコメントをCommentクラスのsetStringメソッドで設定します。

package net.tk_factory.sample.apache.poi.cell;

import java.io.FileOutputStream;
import java.io.IOException;
import net.tk_factory.sample.AbstractSample;
import org.apache.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFComment;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
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.util.HSSFColor;

/**
 * Apache POI-HSSFを使用したサンプルプログラムです。<br/>
 * <br/>
 * <b>内容</b>
 * <ol type="1">
 * <li>セルにフォントを指定したコメントを設定します。</li>
 * </ol>
 * @author Takafumi Kondo (TK Factory)
 */
public class SampleSetCellComment2 extends AbstractSample
{
    /** クラス名 */
    private static final String CLASS_NAME =
        SampleSetCellComment2.class.getSimpleName();

    /** ロガー */
    private static final Logger LOGGER =
        Logger.getLogger(SampleSetCellComment2.class.getName());

    /** 出力ファイル名 */
    private static final String OUT_FILE_NAME =
        SAMPLE_FILE_DIRECTORY + CLASS_NAME + "Out.xls";

    /**
     * SampleSetCellComment2オブジェクトを構築すると、
     * UnsupportedOperationExceptionがスローされます。<br/>
     */
    protected SampleSetCellComment2()
    {
        throw new UnsupportedOperationException();
    }

    /**
     * mainメソッドです。<br/>
     *
     * @param args 引数
     */
    public static void main(String[] args)
    {
        LOGGER.info("[START]" + CLASS_NAME);

        FileOutputStream out = null;

        try
        {
            //すでに出力ファイルが存在している場合は削除する
            deleteExistsFile(OUT_FILE_NAME);

            //ワークブックを生成する
            HSSFWorkbook workbook = new HSSFWorkbook();

            //シートを追加する
            HSSFSheet sheet = workbook.createSheet();

            HSSFPatriarch patriarch = sheet.createDrawingPatriarch();

            //行を追加する
            HSSFRow row = sheet.createRow(1);

            //セルを追加する
            HSSFCell cell = row.createCell(1);

            //アンカーを生成する
            HSSFClientAnchor clientAnchor = new HSSFClientAnchor(
                    //コメントの表示位置の微調整
                    //・1~1023を指定すると、コメントの開始位置が左にズレます
                    0,
                    //・1~255を指定すると、コメントの開始位置が下にズレます
                    0,
                    //・1~1023を指定すると、コメントの終了位置が左にズレます
                    0,
                    //・1~255を指定すると、コメントの終了位置が下にズレます
                    0,
                    //コメントの表示位置のインデックス
                    //・開始位置(横)
                    (short)4,
                    //・開始位置(縦)
                    2,
                    //・終了位置(横)
                    (short)6,
                    //・終了位置(縦)
                    5);

            //フォントを設定する
            HSSFFont font = workbook.createFont();
            font.setFontName("MS ゴシック");
            font.setFontHeightInPoints((short)10);
            font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
            font.setColor(HSSFColor.RED.index);

            //コメントを生成する
            HSSFComment comment = patriarch.createComment(clientAnchor);
            //コメントを設定する
            HSSFRichTextString text = new HSSFRichTextString("コメント");
            //コメントのフォントを設定する
            text.applyFont(font);
            comment.setString(text);
            //コメント作成者を設定する
            comment.setAuthor("TK Factory");

            //セルにコメントを設定する
            cell.setCellComment(comment);

            //ファイルを保存する
            out = new FileOutputStream(OUT_FILE_NAME);
            workbook.write(out);
        }
        catch (IOException ioex)
        {
            LOGGER.error(getStackTrace(ioex));
        }
        finally
        {
            try
            {
                if (out != null)
                {
                    out.close();
                }
            }
            catch (IOException ioex)
            {
                LOGGER.error(getStackTrace(ioex));
            }

            LOGGER.info("[E N D]" + CLASS_NAME);
        }
    }
}

作成されたファイルを開くと、以下のように表示されます。
SampleSetCellComment2Out.xls

SampleSetCellComment2Out.xls(コメント)

SampleSetCellComment2Out.xls(フォント)

関連記事

  1. コメント 0

  1. トラックバック 0

return top