通过java代码画表格。
邮件内容中:最终的样式:-是图中标注的内容
具体代码实现类:–工具类
工具类直接抄就好了,已经封装好了的。
/**
* description :Html形式邮箱内容
* @param htmlContent 标题内容
* @param contentList 表格内容
* @author
* @date 2024/03/11 11:18
* @return String
*/
public static String generateHtml(String htmlContent, List<String[]> contentList) {
StringBuilder stb = new StringBuilder();
stb.append("<!DOCTYPE html>\n")
.append("<html lang=\"zh\">\n")
.append(generateHtmlBody(htmlContent,contentList))
.append("</html>");
return stb.toString();
}
/**
* description :控制表格内容显示
* @param htmlContent 标题内容
* @param contentList 表格内容
* @author
* @date 2024/03/11 11:18
* @return String
*/
public static String generateHtmlBody(String htmlContent, List<String[]> contentList) {
StringBuilder stb = new StringBuilder();
stb.append("<body>\n")
.append("<div style=\"font-size: 16px;\">" + htmlContent + "</div>")
.append("<table style=\"border-width: 1px;border-collapse: collapse;margin: 0 auto;width: 100%;\">\n");
for (int i = 0; i < contentList.size(); i++) {
if (i == 0) {
stb.append(" <tr>\n");
String[] tableHead = contentList.get(0);
for (int j = 0; j < tableHead.length; j++) {
stb.append(" <th style=\"border-width:1px;padding:8px;border-style:solid;background-color:#dedede;\">").append(tableHead[j]).append("</th>\n");
}
stb.append(" </tr>\n");
} else {
stb.append(" <tr>\n");
String[] tableData = contentList.get(i);
for (int j = 0; j < tableData.length; j++) {
stb.append(" <td style=\"border-width:1px;padding:8px;border-style:solid;\">").append(tableData[j]).append("</td>\n");
}
stb.append(" </tr>\n");
}
}
stb.append("</table>\n")
.append("</body>");
return stb.toString();
}
具体的代码使用部分:
// 内容: 这里面的mailContent 是邮件内容
// contentList 是整体表格内容 tableTitle 是表格内容第一行,标题行
String mailContent = "该审批存在如下物理用印文件,请尽快完成用印文件回传: <br/>" +
"申请时间:" + applyTabVoList.get(0).getCreateTime().format(formatter) +"<br/>" +
"申请编号:" + applyTabVoList.get(0).getApplyNo() + "<br/>"+
"审批类型:" + ProcessEnum.INFORMATION_DISCLOSURE.getInfo() + "<br/>" +
"文件上传人/审批发起人:" + applyTabVoList.get(0).getUsrNm() + "<br/>" +
"<br/>" ;
// 邮件里面的表格内容
ArrayList<String[]> contentList = new ArrayList<>();
String[] tableTitle = {"序号", "项目简称", "文件目录", "文件类型", "文件名称"};
contentList.add(tableTitle);
for (int i = 0; i < applyTabVoList.size(); i++) {
String[] tableCum = new String[5];
tableCum[0] = String.valueOf(i + 1);
tableCum[1] = applyTabVoList.get(i).getPrjNm() != null ? applyTabVoList.get(i).getPrjNm() : "无";
tableCum[2] = AnnexTypeEnum.getEnumInfoByKey( applyTabVoList.get(i).getObjType());
tableCum[3] = PublMateTpEnum.getEnumInfoByKey(applyTabVoList.get(i).getPublMateTp());
tableCum[4] = applyTabVoList.get(i).getFileName();
contentList.add(tableCum);
}
// 将上面的工具类,写在一个工具类里面,我写在MailUtils工具类里面的,所以我就直接这样去调用。
String contentList2 = MailUtils.generateHtml(mailContent, contentList);
// 放回的内容就是,邮件正文全内容,包含表格+邮件内容
最终得到的效果就是
就是下面这部分的内容
注意
applyTabVoList 是我查询我的数据库放回的集合对象,我需要将这里面内容写进表格里面去。
你的就替换为自己的。