完整代码:
/**
* 替换Excel模板中的数据
* @param sheetName Sheet名字
* @param modelPath 模板路径
* @param param 需要替换的数据
* @return
* @author 刘泽中
* @Date: 2015年12月11日
*/
public HSSFWorkbook replaceExcel(String sheetName,String modelPath,Map<String, Object> param){
//获取所读取excel模板的对象
try {
File file = new File(modelPath);
if(!file.exists()){
System.out.println("模板文件:"+modelPath+"不存在!");
}
fs = new POIFSFileSystem(new FileInputStream(file));
wb = new HSSFWorkbook(fs);
sheet = wb.getSheet(sheetName);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
replaceExcelDate(param);
return wb;
}
/**
* 根据 Map中的数据替换Excel模板中指定数据
* @param param
* @author 刘泽中
* @Date: 2015年12月11日
*/
public void replaceExcelDate(Map<String, Object> param){
// 获取行数
int rowNum = sheet.getLastRowNum();
for (int i = 0; i < rowNum; i++) {
row = sheet.getRow(i);
// 获取行里面的总列数
int columnNum = 0;
if(row!=null){
columnNum = row.getPhysicalNumberOfCells();
}
for (int j = 0; j < columnNum; j++) {
HSSFCell cell = sheet.getRow(i).getCell(j);
String cellValue = cell.getStringCellValue();
for (Entry<String, Object> entry : param.entrySet()) {
String key = entry.getKey();
if(key.equals(cellValue)){
String value = entry.getValue().toString();
setCellStrValue(i, j, value);
}
}
}
}
}
/**
* 设置字符串类型的数据
* @param rowIndex--行值 从0开始
* @param cellnum--列值 从0开始
* @param value--字符串类型的数据
*
* @author 刘泽中
* @Date: 2015年12月11日
*/
public void setCellStrValue(int rowIndex, int cellnum, String value) {
HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);
cell.setCellValue(value);
}