场景:产生每日的报表并通过邮件发送时,PM提出需要将报表excel(附件)中的内容展现在正文中
当时一想法是某企鹅的邮箱就实现了这个功能,是否在poi接口或者在java email相关的类中有类似的方法,但是找了之后发现并没有可以调用的方法,所以就自己封装了一下,进行简单的数据提取。
/**
* 将excel内容提取转化为html格式以便在邮件中使用
* @author JK Terrific
*
*/
public class Excel2HtmlUtil {
private static Map<Integer, Boolean> combineState = new HashMap<Integer, Boolean>();
/**
* 合并单元格处理--加入list
*
* @param sheet
* @return
*/
private static void getCombineCell(HSSFSheet sheet, List<CellRangeAddress> list) {
// 获得一个 sheet 中合并单元格的数量
int sheetmergerCount = sheet.getNumMergedRegions();
// 遍历合并单元格
for (int i = 0; i < sheetmergerCount; i++) {
// 获得合并单元格加入list中
CellRangeAddress ca = sheet.getMergedRegion(i);
list.add(ca);
combineState.put(i, false);
}
}
/**
* 判断单元格是否为合并单元格
*
* @param listCombineCell
* 存放合并单元格的li