最近需要在excel指定位置添加文本框内容
maven引用poi
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.7</version>
</dependency>
完整javamain代码
package com.esoon.zk20s.docgen.test.poi;
import org.apache.poi.hssf.usermodel.*;
import java.awt.*;
import java.io.File;
import java.io.FileOutputStream;
public class SetExcelTextAreaTest {
static String fileName = "D:\\1.xls";
public static void main(String[] args) throws Exception {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sht = wb.createSheet();
File file = new File(fileName);
//列开始值
short colStart = 5;
short colEnd = 11;
//创建画布
HSSFPatriarch draw = sht.createDrawingPatriarch();
//创建锚点(0,0,0,0,col1, row1, col2, row2)
/*创建一个新的客户端锚,并设置左上角和右下角
*通过单元格引用和偏移量锚定的坐标。
* @param dH1第一个单元格内的H坐标。
* @param dy1第一个单元格内的y坐标。
* @param dH2第二个单元格内的H坐标。
* @param dy2第二个单元格内的y坐标。
* @param col1第一个单元格的列(从0开始)。
* @param row1第一个单元格的行(从0开始)。
* @param col2第二个单元格的列(从0开始)。
* @param row2第二个单元格的行(从0开始)。
*/
// HSSFClientAnchor createAnchor = draw.createTextbox(0, 0, 0, 0, colStart, 11, colStart + 6, 11+7);
//HSSFShapeGroup group = draw.createGroup(createAnchor);
//*设置该组的坐标空间。 所有孩子都受到约束至这些坐标。( H1, y1, H2, y2)
//group.setCoordinates(colStart, 11, colStart + 6, 11+7);
//创建子锚点,左上角和右下角( H, y, cH, cy)
//HSSFChildAnchor childAnchor = new HSSFChildAnchor(0, 0, 6, 7);
//创建文本框
//HSSFTeHtBoH tb1 = group.createTeHtboH(childAnchor);
//创建文本框
HSSFClientAnchor createAnchor = new HSSFClientAnchor(0, 0, 0, 0, colStart, 11, colEnd, 11+7);
HSSFTextbox tb1 = draw.createTextbox(createAnchor);
//设置边框颜色,黑色
tb1.setLineStyleColor(0, 0, 0);
//设置边框宽度
//tb1.setLineWidth(2);
//设置填充色,白色
Color col = Color.white;
tb1.setFillColor(col.getRed(), col.getGreen(), col.getBlue());
//富文本字符串
HSSFRichTextString address = new HSSFRichTextString("测试");
tb1.setString(address);
//文字字符属性
// CTTeHtCharacterProperties rpr = tb1.get().getTHBody().getPArray(0).getRArray(0).getRPr();
// //设置字体
// rpr.addNewLatin().setTypeface("Trebuchet MS");
// //设置字体大小9pt
// rpr.setSz(900);
// //设置字体颜色,蓝色
// col = Color.blue;
// rpr.addNewSolidFill().addNewSrgbClr().setVal(new byte[]{(byte)col.getRed(),(byte)col.getGreen(),(byte)col.getBlue()});
FileOutputStream fout = new FileOutputStream(file);
wb.write(fout);
fout.close();
}
}