Java利用POI编辑Excel模板文件替换文件内容并保存

ExcelReplaceDataVO 类存储替换内容:


/**
* Excel替换内容存储对象
*
* @author Administrator
*
*/
public class ExcelReplaceDataVO {

private int row;// Excel单元格行
private int column;// Excel单元格列
private String key;// 替换的关键字
private String value;// 替换的文本

public int getRow() {
return row;
}

public void setRow(int row) {
this.row = row;
}

public int getColumn() {
return column;
}

public void setColumn(int column) {
this.column = column;
}

public String getKey() {
return key;
}

public void setKey(String key) {
this.key = key;
}

public String getValue() {
return value;
}

public void setValue(String value) {
this.value = value;
}

}


利用POI读取Excel内容并替换成新内容:

public class ExcelUtil {

/**
* 替换Excel模板文件内容
* @param datas 文档数据
* @param sourceFilePath Excel模板文件路径
* @param targetFilePath Excel生成文件路径
*/
public static boolean replaceModel(List<ExcelReplaceDataVO> datas, String sourceFilePath, String targetFilePath) {
boolean bool = true;
try {

POIFSFileSystem fs =new POIFSFileSystem(new FileInputStream(sourceFilePath));
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);

for (ExcelReplaceDataVO data : datas) {
//获取单元格内容
HSSFRow row = sheet.getRow(data.getRow());
HSSFCell cell = row.getCell((short)data.getColumn());
String str = cell.getStringCellValue();

//替换单元格内容
str = str.replace(data.getKey(), data.getValue());

//写入单元格内容
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(str);
}

// 输出文件
FileOutputStream fileOut = new FileOutputStream(targetFilePath);
wb.write(fileOut);
fileOut.close();

} catch (Exception e) {
bool = false;
e.printStackTrace();
}
return bool;
}
}


测试代码:

public class TestExcelReplace {

public static void main(String[] args) {
List<ExcelReplaceDataVO> datas = new ArrayList<ExcelReplaceDataVO>();

//找到第14行第2列的company,用"XXX有限公司"替换掉company
ExcelReplaceDataVO vo1 = new ExcelReplaceDataVO();
vo1.setRow(13);
vo1.setColumn(1);
vo1.setKey("company");
vo1.setValue("XXX有限公司");

//找到第5行第2列的content,用"aa替换的内容aa"替换掉content
ExcelReplaceDataVO vo2 = new ExcelReplaceDataVO();
vo2.setRow(4);
vo2.setColumn(1);
vo2.setKey("content");
vo2.setValue("aa替换的内容aa");

datas.add(vo1);
datas.add(vo2);
//d:\\template.xls为Excel模板文件,d:\\test.xls为程序根据Excel模板文件生成的新文件
ExcelUtil.replaceModel(datas, "d:\\template.xls", "d:\\test.xls");

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值