ExcelReplaceDataVO 类存储替换内容:
利用POI读取Excel内容并替换成新内容:
测试代码:
/**
* 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");
}