首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2012-11-04 
Java利用POI编辑Excel模板文件替换文件内容并保存ExcelReplaceDataVO 类存储替换内容:/** * Excel替换内容

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有限公司"替换掉companyExcelReplaceDataVO vo1 = new ExcelReplaceDataVO();vo1.setRow(13);vo1.setColumn(1);vo1.setKey("company");vo1.setValue("XXX有限公司");//找到第5行第2列的content,用"aa替换的内容aa"替换掉contentExcelReplaceDataVO 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");}

热点排行