有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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


共 (2) 个答案

  1. # 1 楼答案

    我不认为有任何直接的方法可以将excel表格嵌入电子邮件正文

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

  2. # 2 楼答案

    我不确定表中有哪些数据 我假设它是一个在第二张纸上有一些值的表

        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
    

    我是在table的帮助下得到这个的 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