执行计划生成的excel文档再按创建人进行分别电邮原创
金蝶云社区-htv
htv
23人赞赏了该文章 138次浏览 未经作者许可,禁止转载编辑于2024年06月12日 16:15:43

小小扩展一下,当笔记,有需要的拿走

二开案例.执行计划.引出列表数据并发送邮件 (kingdee.com)

public void ProcessDataAndSendEmail(string filePath)
{
    // 读取Excel文件
    var workbook = new XSSFWorkbook(filePath);
    var sheet = workbook.GetSheetAt(0);

    // 获取电邮地址列的索引
    var headerRow = sheet.GetRow(0);
    int emailColumnIndex = -1;
    for (int i = headerRow.FirstCellNum; i < headerRow.LastCellNum; i++)
    {
        if (headerRow.GetCell(i).StringCellValue == "note_mail")
        {
            emailColumnIndex = i;
            break;
        }
    }
    if (emailColumnIndex == -1)
    {
        throw new Exception("未找到note_mail列");
    }

    // 获取所有的电邮地址
    var emails = new HashSet<string>();
    for (int i = 1; i <= sheet.LastRowNum; i++)
    {
        var row = sheet.GetRow(i);
        var cell = row.GetCell(emailColumnIndex);
        emails.Add(cell.StringCellValue);
    }

    // 对于每一个电邮地址,筛选数据并发送邮件
    foreach (var email in emails)
    {
        // 创建一个新的工作簿和工作表
        var newWorkbook = new XSSFWorkbook();
        var newSheet = newWorkbook.CreateSheet("Sheet1");

        // 筛选符合条件的行并添加到新的工作表
        int newRowNum = 0;
        for (int i = 0; i <= sheet.LastRowNum; i++)
        {
            var row = sheet.GetRow(i);
            var cell = row.GetCell(emailColumnIndex);
            if (cell.StringCellValue == email)
            {
                var newRow = newSheet.CreateRow(newRowNum++);
                for (int j = row.FirstCellNum; j < row.LastCellNum; j++)
                {
                    // 跳过电邮地址列
                    if (j == emailColumnIndex) continue;

                    var newCell = newRow.CreateCell(j < emailColumnIndex ? j : j - 1);
                    newCell.SetCellValue(row.GetCell(j).StringCellValue);
                }
            }
        }

        // 保存新的Excel文件
        var newFilePath = "path_to_your_new_file";
        using (var fileStream = new FileStream(newFilePath, FileMode.Create, FileAccess.Write))
        {
            newWorkbook.Write(fileStream);
        }

        // 发送邮件
       var cclist=[]; 
       var mySubject="--";
       listExportService.SendMail(newFilePath, email, cclist, mySubject);
    }
}


赞 23