public class MailTest {
public static void main(String[] args) throws Exception {
System.out.println("邮件合并测试开始。。。");
String template = "C:/Users/aspose words/asposeWordsTest.docx"; //模板文件
// String destdoc = "C:/Users/aspose words/asposeWordsTest_new.docx"; //保存的文件(可选)
String excelPath = "C:/Users/aspose words/test.xlsx";//数据源文件
FileInputStream fis = new FileInputStream(excelPath);
XSSFWorkbook xwb = new XSSFWorkbook(fis);// 构造 XSSFWorkbook对象,strPath 传入文件路径
// if(xwb==null){
// System.out.println("未读取到内容,请检查路径!");
// return null;
// }
XSSFSheet sheet = xwb.getSheetAt(0);// 读取第一张表格内容
XSSFRow row = sheet.getRow(0);//读取的第一行
int a = row.getPhysicalNumberOfCells();
String[] flds = new String[a];
List listVals = new ArrayList();
if(row !=null){
for (int j = row.getFirstCellNum(); j <=row.getPhysicalNumberOfCells(); j++) {
// 通过 row.getCell(j).toString() 获取单元格内容,
if(row.getCell(j)!=null){
if(!row.getCell(j).toString().isEmpty()){
flds[j] = row.getCell(j).toString();
}
}
}
}
// 循环输出表格中的从第二行开始内容
for (int i = sheet.getFirstRowNum() + 1; i <= sheet.getPhysicalNumberOfRows(); i++) {
row = sheet.getRow(i);
String[] val = new String[a];
if (row != null) {
boolean isValidRow = false;
for (int j = row.getFirstCellNum(); j <= row.getPhysicalNumberOfCells(); j++) {
XSSFCell cell = row.getCell(j);
if (cell != null) {
String cellValue = getCellValue(cell);
val[j] = cellValue;
if(!isValidRow && cellValue!= null && cellValue.trim().length()>0){
isValidRow = true;
}
}
}
listVals.add(val);
}
}
Document doc = new Document(template);//读取模板文件
for (int i = 0; listVals != null && i < listVals.size(); i++) {
Document cloneDoc = (Document)doc.deepClone(true);//克隆模板
String[] vals = (String[]) listVals.get(i);
cloneDoc.getMailMerge().execute(flds, vals);
cloneDoc.save( "C:/Users/aspose words/asposeWordsTest_new"+ i +".docx" );//保存文件
}
System.out.println("邮件合并测试结束。。。");
}
// private static String getCellValue(HSSFCell cell) {
// DecimalFormat df = new DecimalFormat("#");
// String cellValue=null;
// if (cell == null)
// return null;
// switch (cell.getCellType()) {
// case HSSFCell.CELL_TYPE_NUMERIC:
// if(HSSFDateUtil.isCellDateFormatted(cell)){
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// cellValue=sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue()));
// break;
// }
// cellValue=df.format(cell.getNumericCellValue());
// break;
// case HSSFCell.CELL_TYPE_STRING:
// cellValue=String.valueOf(cell.getStringCellValue());
// break;
// case HSSFCell.CELL_TYPE_FORMULA:
// cellValue=String.valueOf(cell.getCellFormula());
// break;
// case HSSFCell.CELL_TYPE_BLANK:
// cellValue=null;
// break;
// case HSSFCell.CELL_TYPE_BOOLEAN:
// cellValue=String.valueOf(cell.getBooleanCellValue());
// break;
// case HSSFCell.CELL_TYPE_ERROR:
// cellValue=String.valueOf(cell.getErrorCellValue());
// break;
// }
// if(cellValue!=null&&cellValue.trim().length()<=0){
// cellValue=null;
// }
// return cellValue;
// }
//处理单元格数据
private static String getCellValue(XSSFCell cell) {
DecimalFormat df = new DecimalFormat("#");
String cellValue=null;
if (cell == null)
return null;
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_NUMERIC:
if(HSSFDateUtil.isCellDateFormatted(cell)){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
cellValue=sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue()));
break;
}
cellValue=df.format(cell.getNumericCellValue());
break;
case HSSFCell.CELL_TYPE_STRING:
cellValue=String.valueOf(cell.getStringCellValue());
break;
case HSSFCell.CELL_TYPE_FORMULA:
cellValue=String.valueOf(cell.getCellFormula());
break;
case HSSFCell.CELL_TYPE_BLANK:
cellValue=null;
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
cellValue=String.valueOf(cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_ERROR:
cellValue=String.valueOf(cell.getErrorCellValue());
break;
}
if(cellValue!=null&&cellValue.trim().length()<=0){
cellValue=null;
}
return cellValue;
}
}
参考文档:http://www.xiaoguo123.com/p/aspose_words_java_template/
https://blog.youkuaiyun.com/sinat_30276961/article/details/48372981
https://blog.youkuaiyun.com/sinat_30276961/article/category/5781147
https://blog.youkuaiyun.com/qq547276542/article/details/75175289