HSSFTextbox

1.HSSFTextbox

文本框是可以保存富文本字符串的形状。

public class HSSFTextbox extends HSSFSimpleShape {
}

创建一个文本框相关联的类



2.常量

// Shape形状类型:6表示文本框
public final static short OBJECT_TYPE_TEXT = 6;

// 文字水平左对齐
public final static short HORIZONTAL_ALIGNMENT_LEFT = 1;

// 文字水平居中
public final static short HORIZONTAL_ALIGNMENT_CENTERED = 2

// 文字水平右对齐
public final static short HORIZONTAL_ALIGNMENT_RIGHT = 3;

// 让文本框中的一整行文字平均对齐
public final static short HORIZONTAL_ALIGNMENT_JUSTIFIED = 4;

// 文字水平两端对齐
public final static short HORIZONTAL_ALIGNMENT_DISTRIBUTED = 7;

// 文字垂直上对齐
public final static short VERTICAL_ALIGNMENT_TOP = 1;

// 文字垂直居中
public final static short VERTICAL_ALIGNMENT_CENTER = 2

// 文字垂直下对齐
public final static short VERTICAL_ALIGNMENT_BOTTOM = 3;

// 文字垂直
public final static short VERTICAL_ALIGNMENT_JUSTIFY = 4;

// 文字垂直平均对齐
public final static short VERTICAL_ALIGNMENT_DISTRIBUTED = 7;
3.方法


4.实例

代码

package hssf;

import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFShape;
import org.apache.poi.hssf.usermodel.HSSFSimpleShape;
import org.apache.poi.hssf.usermodel.HSSFTextbox;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;

public class TestHSSFTextBox {

	public static void main(String[] args) throws IOException {
		// 创建一个工作博
		Workbook workbook = new HSSFWorkbook();
		// 创建一个sheet
		Sheet sheet = workbook.createSheet();
		// 画图的顶级管理器对象HSSFPatriarch, 一个sheet只能获取一个
		HSSFPatriarch hssfPatriarch = (HSSFPatriarch) sheet.createDrawingPatriarch();
		
		/****************************************文本框水平垂直对齐**************************************************/
		// 形状在sheet中的锚点位置
		HSSFClientAnchor anchor1 = new HSSFClientAnchor(0, 0, 0, 0, (short)1, 2, (short)4, 8);
		// 创建一个文本框
		HSSFTextbox textbox1 = hssfPatriarch.createTextbox(anchor1);
		HSSFRichTextString richTextString = new HSSFRichTextString("港版支付宝上线后,所有香港居民都可以通过绑定香港当地银行信用卡或余额充值使用支付宝,直接用港币付款,使用更加方便。");
		textbox1.setString(richTextString);
		
		// 设置文本框水平垂直对齐
		textbox1.setHorizontalAlignment(HSSFTextbox.HORIZONTAL_ALIGNMENT_CENTERED);
		textbox1.setVerticalAlignment(HSSFTextbox.VERTICAL_ALIGNMENT_CENTER);
		
		/****************************************文本框文字留白**************************************************/
		HSSFClientAnchor anchor2 = new HSSFClientAnchor(0, 0, 0, 0, (short)5, 2, (short)8, 8);
		HSSFTextbox textbox2 = hssfPatriarch.createTextbox(anchor2);
		textbox2.setString(richTextString);
		
		// 设置文本框留白, HSSFShape.LINEWIDTH_ONE_PT是形状中单位,1pt=1/72英寸
		textbox2.setMarginLeft(10 * HSSFShape.LINEWIDTH_ONE_PT);
		textbox2.setMarginTop(10 * HSSFShape.LINEWIDTH_ONE_PT);
		textbox2.setMarginRight(10 * HSSFShape.LINEWIDTH_ONE_PT);
		textbox2.setMarginBottom(10 * HSSFShape.LINEWIDTH_ONE_PT);

		/****************************************文本框边框样式及填充色**************************************************/
		HSSFClientAnchor anchor3 = new HSSFClientAnchor(0, 0, 0, 0, (short)10, 2, (short)14, 8);
		HSSFTextbox textbox3 = hssfPatriarch.createTextbox(anchor3);
		textbox3.setString(richTextString);
		
		// 设置填充颜色 - 绿色
		textbox3.setFillColor(106, 168, 79);
		// 设置文本框边框颜色 - 蓝色
		textbox3.setLineStyleColor(0, 0, 255);
		// 设置文本框边框宽度 - 3pt
		textbox3.setLineWidth(3 * HSSFShape.LINEWIDTH_ONE_PT);
		// 设置文本框边框样式 - 长破折号和点间隔
		textbox3.setLineStyle(HSSFShape.LINESTYLE_LONGDASHDOTGEL);
		
		/****************************************文本框setWrapText**************************************************/
		HSSFClientAnchor anchor4 = new HSSFClientAnchor(0, 0, 0, 0, (short)15, 2, (short)19, 8);
		HSSFTextbox textbox4 = hssfPatriarch.createTextbox(anchor4);
		HSSFRichTextString richTextString1 = new HSSFRichTextString("daxdd afcsdtadt svxgy sfyfx yfxts ffst fxs hgfx gfs fgsddsr gsfxxs gsfxts sjs");
		textbox4.setString(richTextString1);
		
		// 暂时没看出什么效果
//		textbox4.setWrapText(HSSFSimpleShape.WRAP_SQUARE);
//		textbox4.setWrapText(HSSFSimpleShape.WRAP_BY_POINTS);
		textbox4.setWrapText(HSSFSimpleShape.WRAP_NONE);
		
		/****************************************文本框旋转**************************************************/
		HSSFClientAnchor anchor5 = new HSSFClientAnchor(0, 0, 0, 0, (short)1, 15, (short)4, 20);
		HSSFTextbox textbox5 = hssfPatriarch.createTextbox(anchor5);
		textbox5.setString(richTextString1);
		
		/**
		 * 设置文本框旋转多少度,围绕形状的中心旋转,该属性的默认值为0x00000000
		 * 正值:顺时针旋转
		 * 负值:逆时针旋转
		 * */
		textbox5.setRotationDegree((short)44);
		
		HSSFClientAnchor anchor6 = new HSSFClientAnchor(0, 0, 0, 0, (short)5, 15, (short)8, 20);
		HSSFTextbox textbox6 = hssfPatriarch.createTextbox(anchor6);
		textbox6.setString(richTextString1);
		
		// 被他的选择搞懵了,求解
		textbox6.setRotationDegree((short)45);
		
		/****************************************文本框水平反转和垂直翻转**************************************************/
		HSSFClientAnchor anchor7 = new HSSFClientAnchor(0, 0, 0, 0, (short)10, 15, (short)14, 20);
		HSSFTextbox textbox7 = hssfPatriarch.createTextbox(anchor7);
		textbox7.setString(richTextString1);
		
		/**
		 * 设置文本框是否水平翻转或垂直翻转
		 * true:表示将文本框水平或垂直翻转了
		 * false:不进行翻转
		 * */
		textbox7.setFlipHorizontal(true);
		
		HSSFClientAnchor anchor8 = new HSSFClientAnchor(0, 0, 0, 0, (short)15, 15, (short)19, 20);
		HSSFTextbox textbox8 = hssfPatriarch.createTextbox(anchor8);
		textbox8.setString(richTextString1);
		
		// 设置垂直翻转
		textbox8.setFlipVertical(true);
		
		/********************************************************************************************************/
		
		FileOutputStream file = new FileOutputStream("C://Users//Administrator//Desktop//test.xls");
		workbook.write(file);
		file.close();
	}
}
输出结果

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
给Office文件添加数字水印可以使用Apache POI库来实现。下面是一个示例代码: ```java import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFPatriarch; import org.apache.poi.hssf.usermodel.HSSFShape; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFSimpleShape; import org.apache.poi.hssf.usermodel.HSSFTextbox; import org.apache.poi.ss.usermodel.ShapeTypes; public class Watermark { public static void addWatermark(String filename, String watermark) throws IOException { HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(filename)); HSSFSheet sheet = workbook.getSheetAt(0); HSSFPatriarch drawing = sheet.createDrawingPatriarch(); HSSFTextbox textbox = drawing.createTextbox(new org.apache.poi.ss.usermodel.ClientAnchor()); textbox.setString(new org.apache.poi.hssf.usermodel.HSSFRichTextString(watermark)); textbox.setShapeType(ShapeTypes.TEXT_BOX); textbox.setLineWidth(0); FileOutputStream out = new FileOutputStream(filename); workbook.write(out); out.close(); } public static String getWatermark(String filename) throws IOException { HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(filename)); HSSFSheet sheet = workbook.getSheetAt(0); for (HSSFShape shape : sheet.getDrawingPatriarch().getChildren()) { if (shape instanceof HSSFTextbox) { String text = ((HSSFTextbox) shape).getString().getString(); if (text.matches(".*\\d+.*")) { return text; } } } return null; } public static void main(String[] args) throws IOException { String filename = "test.xls"; String watermark = "Watermark123"; addWatermark(filename, watermark); System.out.println(getWatermark(filename)); } } ``` 上述代码中,`addWatermark`方法接收两个参数:需要添加水印的Office文件名和要添加的水印字符串。该方法使用POI库创建一个文本框并在其中写入水印字符串,然后将文本框插入到工作表中。 `getWatermark`方法接收一个参数:需要获取水印的Office文件名。该方法遍历工作表中的所有形状,查找文本框并返回第一个包含数字的文本框中的字符串。如果找不到这样的文本框,则返回null。 在main方法中,我们测试了`addWatermark`和`getWatermark`方法。首先使用`addWatermark`方法在名为`test.xls`的文件中添加了一个名为`Watermark123`的水印,然后使用`getWatermark`方法获取了该水印并打印到控制台上。 请注意,上述示例代码仅适用于Excel文件,如果要在Word文档或PowerPoint演示文稿中添加数字水印,则需要使用不同的POI类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值