阅读excel并使用java将其附加到邮件正文中

时间:2017-01-12 08:07:21

标签: java excel

我有一份工作,使用Java运行并创建一个Excel工作簿,其中包含用户摘要(在第一张表格中)和用户详细信息(在下一页中)。

我需要在电子邮件正文中发送创建的摘要表(即表格格式的总体摘要详细信息)(不作为附件)。有没有办法直接阅读Excel表格并将其内容复制到邮件正文?有人可以显示示例代码吗?我尝试使用-rmimebodypart(),但我无法将其放入邮件正文中,它将作为附件。

2 个答案:

答案 0 :(得分:0)

我认为没有任何直接的方法可以将Excel工作表嵌入到电子邮件正文中。

一种方法是将内容类型设置为text / html,循环遍历excel的内容,并使用html的<table>指令形成html字符串。

答案 1 :(得分:0)

我不确定表中的数据是什么 我假设它是第二张表中有一些值的表

    FileInputStream fis = new FileInputStream("d:\\1\\2\\2.xlsx");
        XSSFWorkbook workbook = new XSSFWorkbook(fis);
        int numberOfSheets = workbook.getNumberOfSheets();
        for (int sheetIdx = 0; sheetIdx < numberOfSheets; sheetIdx++) {
            XSSFSheet sheet = workbook.getSheetAt(sheetIdx);
            List<XSSFTable> tables = sheet.getTables();
            for (XSSFTable t : tables) {
                System.out.println(t.getDisplayName());
                System.out.println(t.getName());
                System.out.println(t.getNumerOfMappedColumns());

                int startRow = t.getStartCellReference().getRow();
                int endRow = t.getEndCellReference().getRow();
                System.out.println("startRow = " + startRow);
                System.out.println("endRow = " + endRow);

                int startColumn = t.getStartCellReference().getCol();
                int endColumn = t.getEndCellReference().getCol();

                System.out.println("startColumn = " + startColumn);
                System.out.println("endColumn = " + endColumn);

                for (int i = startRow; i <= endRow; i++) {
                    String cellVal = "";

                    for (int j = startColumn; j <= endColumn; j++) {
                        XSSFCell cell = sheet.getRow(i).getCell(j);
                        if (cell != null) {
                            cellVal = cell.getStringCellValue();
                        }
                        System.out.print(cellVal + "\t");
                    }
                    System.out.println();
                }

            }
        }

使用此功能,您可以获取表格的所有数据,然后将其添加到您的电子邮件正文中。

我得到了这个结果

这是我在第二张表中的表格

    two three   four    five    six seven
    abd dfdsfs  fghf    afr dfdsfs  fghf
    abd dfdsfs  fghf    afr dfdsfs  fghf
    abd dfdsfs  fghf    afr dfdsfs  fghf
    abd dfdsfs  fghf    afr dfdsfs  fghf
    abd dfdsfs  fghf    afr dfdsfs  fghf
    abd dfdsfs  fghf    afr dfdsfs  fghf
    abd dfdsfs  fghf    afr dfdsfs  fghf
    abd dfdsfs  fghf    afr dfdsfs  fghf
    abd dfdsfs  fghf    afr dfdsfs  fghf
    abd dfdsfs  fghf    afr dfdsfs  fghf
    abd dfdsfs  fghf    afr dfdsfs  fghf

我在表的帮助下得到了这个 XSSF:

  startRow = 7
endRow = 18
startColumn = 7
endColumn = 13

    two three   four    five    six seven   
    abd dfdsfs  fghf    afr dfdsfs  fghf    
    abd dfdsfs  fghf    afr dfdsfs  fghf    
    abd dfdsfs  fghf    afr dfdsfs  fghf    
    abd dfdsfs  fghf    afr dfdsfs  fghf    
    abd dfdsfs  fghf    afr dfdsfs  fghf    
    abd dfdsfs  fghf    afr dfdsfs  fghf    
    abd dfdsfs  fghf    afr dfdsfs  fghf    
    abd dfdsfs  fghf    afr dfdsfs  fghf    
    abd dfdsfs  fghf    afr dfdsfs  fghf    
    abd dfdsfs  fghf    afr dfdsfs  fghf    
    abd dfdsfs  fghf    afr dfdsfs  fghf