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文件,从字体选择的地方直接复制过来就可以了。