POI设置单元格字体

这一节来试试看,如何用POI来指定单元格文字或数字的字体。指定字体时,使用「HSSFCellStyle」类的「setFont」方法。

setFont
public void setFont(HSSFFont font)
set the font for this style 

Parameters:
  font - a font object created or retreived
from the HSSFWorkbook object

参数是表示字体的「HSSFFont」类对象。关于「HSSFFont」类的定义,详见如下:

HSSFFont类定义

  • java.lang.Object
  • org.apache.poi.hssf.usermodel.HSSFFont
  • public class HSSFFont extends java.lang.Object

虽然有一个构造方法,但仍然是protected的,还是不能直接使用。必须通过「HSSFWorkbook」类的「createFont」方法来生成。

createFont
public HSSFFont createFont()
create a new Font and add it to the workbook's font table 

Returns:
  new font object

使用方法如下:

HSSFWorkbook workbook = new HSSFWorkbook();

HSSFFont font = workbook.createFont();
HSSFCellStyle style = workbook.createCellStyle();

style.setFont(font);

字体的指定

下面就具体看看如何设定字体。指定字体使用「HSSFFont」类的「setFontName」方法。

setFontName
public void setFontName(java.lang.String name)
set the name for the font (i.e. Arial) 

Parameters:
  name - String representing the name of the font to use

参数是字体名称。如「Arial Black」和「华文彩云」等。另外还有一点要说明的是,如果你要设置中文字体,那必须还要再对单元格进行编码设置

(font.setCharSet(HSSFFont.DEFAULT_CHARSET)),否则无效。

示例程序

实际动手做做看吧。

import java.io.*;

import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;

public class POISample{
  public static void main(String[] args){
    HSSFWorkbook workbook = new HSSFWorkbook();

    HSSFSheet sheet = workbook.createSheet();

    HSSFRow row0 = sheet.createRow(0);
    HSSFCell cell0 = row0.createCell(1);

    HSSFCellStyle style0 = workbook.createCellStyle();
    HSSFFont font0 = workbook.createFont();
    font0.setFontName("Arial Black");
    style0.setFont(font0);
    cell0.setCellStyle(style0);
    cell0.setCellValue(new HSSFRichTextString("Arial Black"));

    HSSFRow row1 = sheet.createRow(1);
    HSSFCell cell1 = row1.createCell(1);

    HSSFCellStyle style1 = workbook.createCellStyle();
    HSSFFont font1 = workbook.createFont();
    font1.setFontName("华文彩云");
    font1.setCharSet(HSSFFont.DEFAULT_CHARSET);
    style1.setFont(font1);
    cell1.setCellStyle(style1);
    cell1.setCellValue(new HSSFRichTextString("华文彩云"));

    HSSFRow row2 = sheet.createRow(2);
    HSSFCell cell2 = row2.createCell(1);

    HSSFCellStyle style2 = workbook.createCellStyle();
    HSSFFont font2 = workbook.createFont();
    font2.setFontName("隶书");
    font2.setCharSet(HSSFFont.DEFAULT_CHARSET);
    style2.setFont(font2);
    cell2.setCellStyle(style2);
    cell2.setCellValue(new HSSFRichTextString("隶书"));

    HSSFRow row3 = sheet.createRow(3);
    HSSFCell cell3 = row3.createCell(1);

    HSSFCellStyle style3 = workbook.createCellStyle();
    HSSFFont font3 = workbook.createFont();
    font3.setFontName("华文行楷");
    //font3.setCharSet(HSSFFont.DEFAULT_CHARSET);
    style3.setFont(font3);
    cell3.setCellStyle(style3);
    cell3.setCellValue(new HSSFRichTextString("华文行楷"));

    FileOutputStream out = null;
    try{
      out = new FileOutputStream("sample.xls");
      workbook.write(out);
    }catch(IOException e){
      System.out.println(e.toString());
    }finally{
      try {
        out.close();
      }catch(IOException e){
        System.out.println(e.toString());
      }
    }
  }
}

运行结果如下:

字体指定

另外,要取得可以指定的字体,最简单的方法就是,打开Excel文件,从字体选择的地方直接复制过来就可以了。

Leave a Reply

We will keep You Updated...
Sign up to receive breaking news
as well as receive other site updates!
Sponsors


Featured Video
Enter featured video code here.
Sponsors
Enter Google Analytics Code Here