POI Fonts 字体样式处理

2019-04-24 09:28|来源: 网路

本章介绍如何设置不同的字体,应用样式,并在Excel电子表格中显示的方向不同角度的文字。

每个系统附带一个很大的字体如 Arial, Impact, Times New Roman,等字体集合也可以用新的字体更新,如果需要的话。同样也有各种风格,其中的字体可以显示,例如,粗体,斜体,下划线,删除线等。

字体和字体样式

下面的代码用于特定的字体和样式应用于一单元格的内容。

import java.io.File;
import java.io.FileOutputStream;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class FontStyle 
{
   public static void main(String[] args)throws Exception 
   {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("Fontstyle");
      XSSFRow row = spreadsheet.createRow(2);
      //Create a new font and alter it.
      XSSFFont font = workbook.createFont();
      font.setFontHeightInPoints((short) 30);
      font.setFontName("IMPACT");
      font.setItalic(true);
      font.setColor(HSSFColor.BRIGHT_GREEN.index);
      //Set font into style
      XSSFCellStyle style = workbook.createCellStyle();
      style.setFont(font);
      // Create a cell with a value and set style to it.
      XSSFCell cell = row.createCell(1);
      cell.setCellValue("Font Style");
      cell.setCellStyle(style);
      FileOutputStream out = new FileOutputStream(
      new File("fontstyle.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println(
      "fontstyle.xlsx written successfully");
   }
}

让我们保存上面的代码在一个名为FontStyle.java文件。从命令提示符编译并执行它如下。

$javac FontStyle.java
$java FontStyle

它生成一个名为fontstyle.xlsx在当前目录中的Excel文件并显示在命令提示符处键入以下输出。

fontstyle.xlsx written successfully

fontstyle.xlsx文件如下所示。

FontStyle

文字方向

在这里,可以学习如何设置不同角度的文本方向。通常单元格的内容以水平方式显示,由左到右,并在00角;但是可以使用下面的代码来旋转文本的方向(如果需要的话)。

import java.io.File;
import java.io.FileOutputStream;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class TextDirection 
{
   public static void main(String[] args)throws Exception 
   {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet(
      "Text direction");
      XSSFRow row = spreadsheet.createRow(2);
      XSSFCellStyle myStyle = workbook.createCellStyle();
      myStyle.setRotation((short) 0);
      XSSFCell cell = row.createCell(1);
      cell.setCellValue("0D angle");
      cell.setCellStyle(myStyle);
      //30 degrees
      myStyle=workbook.createCellStyle();
      myStyle.setRotation((short) 30);
      cell = row.createCell(3);
      cell.setCellValue("30D angle");
      cell.setCellStyle(myStyle);
      //90 degrees
      myStyle=workbook.createCellStyle();
      myStyle.setRotation((short) 90);
      cell = row.createCell(5);
      cell.setCellValue("90D angle");
      cell.setCellStyle(myStyle);
      //120 degrees
      myStyle=workbook.createCellStyle();
      myStyle.setRotation((short) 120);
      cell = row.createCell(7);
      cell.setCellValue("120D angle");
      cell.setCellStyle(myStyle);
      //270 degrees
      myStyle = workbook.createCellStyle();
      myStyle.setRotation((short) 270);
      cell = row.createCell(9);
      cell.setCellValue("270D angle");
      cell.setCellStyle(myStyle);
      //360 degrees
      myStyle=workbook.createCellStyle();
      myStyle.setRotation((short) 360);
      cell = row.createCell(12);
      cell.setCellValue("360D angle");
      cell.setCellStyle(myStyle);
      FileOutputStream out = new FileOutputStream(
      new File("textdirection.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println( 
      "textdirection.xlsx written successfully");
   }
}

保持TextDirectin.java文件上面的代码,然后编译并从命令提示符如下执行它。

$javac TextDirection.java
$java TextDirection

这将编译和执行,以生成一个名为textdirection.xlsx在当前目录中的Excel文件并显示在命令提示符处键入以下输出。

textdirection.xlsx written successfully

textdirection.xlsx文件如下所示。

TextDirectin


相关问答

更多
  • compass任务不负责将字体从app复制到dist 。 这是通过copy任务来处理的,通常看起来像这样: copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', ...
  • 取决于您的imagemagick版本: convert -list type # for IM older than v6.3.5-7 convert -list font # for newer versions 输出格式也改变了... depending on your imagemagick version: convert -list type # for IM older than v6.3.5-7 convert -list font # for ...
  • 只是为了确保:不要指望找到支持繁体中文,简体中文和日文的字体。 同一个Unicode代码点存在字形差异,因此原生用户会立即发现您的语言没有使用适当的字体。 对于Web应用程序,最好给出一个字体列表,并且在列表中,您需要一个典型的Windows字体,一个典型的Mac字体以及一个通用的字体(如“serif”)。 使用正确的lang标签标记html页面(或段落)将有助于一些(更智能的)浏览器在未安装特定的字体的情况下选择正确的字体。 Just to make sure: do not expect to find ...
  • 他们使用常规CSS。 只需使用您的常规字体系列: font-family: 'Open Sans', sans-serif; 现在你决定添加字体应该具有什么“重量” 半粗体 font-weight:600; 为大胆(700) font-weight:bold; 额外大胆(800) font-weight:800; 像这样它的回退证明,所以如果谷歌字体应该“失败”你的备份字体Arial / Helvetica(无衬线)使用与谷歌字体相同的权重。 很聪明:-) 请注意,不同的字体权重必须通过标题中的链接 ...
  • 这些字体名称是从后面排版中可用的添加字体样式合成的,特别是在OpenType中添加的样式。 他们不完美地映射回旧的GDI风格。 您所看到的诀窍是将姓氏从Monotype修改为“Monotype Corsiva”,强烈暗示只有斜体(“草书”)样式可用。 相同类型的映射技巧用于各种添加的粗体样式和音高,名称如“Semibold”和“Condense”。 由于您只能使用FontStyle枚举来选择代码中的字体,因此使用FontFamily.IsStyleAvailable()方法检查映射的样式应该可以正常工作。 ...
  • 不同的字体由不同的字体代工厂创建。 不是所有的字体都会在同一个地方找到。 由于字体许可,并非所有字体都可用作Web字体。 字体并不总是免费的,好的字体很少是免费的。 通常,您可以通过搜索字体名称和“@ font-face”来了解字体是否可用作网络字体,以及谁拥有该字体。 你绝对应该知道你将获得你将要使用的字体的位置。 如果你有三种来自三种不同字体服务的字体,那就很糟糕。 Firefox特别喜欢它,你会遇到一些非常不好的问题。 幸运的是,所有这些字体都可以通过字体松鼠获得 Bebas http://www.f ...
  • 关于在Word如何插入图表的工作,应该知道些什么: 当我们添加标题时 ,每个标题段落都包含一个序列字段{SEQ figure \* ARABIC} 。 名称“figure”是序列字段的名称。 然后,如果要创建一个数字表格, Word收集所有包含这样一个字段的段落,以从这些字段中构建数字表格。 到目前为止( apache poi版本3.17)不会为数字添加标题,也不会插入或创建数字表格,至少据我所知。 所以我们必须使用低级别的CTSimpleField来做到这一点 。 例: import java.io.In ...
  • 当您使用“EnumFontFamiliesEx”时,回调函数接收结构LOGFONT .... LOGFONT有两个变量lfWeight和lfItalic 。 使用这两个变量来检查枚举字体是否具有样式。 如果lfWeight值为0( FW_DONTCARE )并且lfItalic为false,则可以认为这没有任何风格。 或者,如果你想要非常具体,例如,你想只考虑字体只有粗体和常规,那么你可以验证,如果lfWeight值从{400(正常),600(大),700(大),800 (胆大)} 下面的链接有所有的细节。 ...
  • 字符大小取决于所选的字体。 例如,用10pt Arial和10pt Times New Roman字体书写的相同短语的宽度是不同的。 因此,要计算列的宽度,apache-poi应该知道您正在使用的字体。 因此,您应该为要自动调整大小的每个单元格设置字体。 这是一个例子: CellStyle cellStyle = workbook.createCellStyle(); Font font = workbook.createFont(); font.setFontHeight(14.0); //some ad ...
  • 我在系统中发现了一个较旧的库版本: bash-4.3$ find /usr -name "libfreetype.*" find: /usr/games/hide: Permission denied /usr/pkg/lib/libfreetype.la /usr/pkg/lib/libfreetype.a /usr/pkg/lib/libfreetype.so /usr/pkg/lib/libfreetype.so.6 /usr/pkg/lib/libfreetype.so.6.11.3 然后,我为最 ...