1.利用NPOI生成EXCEL

2.导出excel之后发送邮件

//导出excel

//path :保存路径

//dt:要导出的数据 

public static bool DataTableToExcel(String path, DataTable dt)
{
  bool result = false;
  IWorkbook workbook = null;
  FileStream fs = null;
  IRow row = null;
  ISheet sheet = null;
  ICell cell = null;
  try
  {
    if (dt != null && dt.Rows.Count > 0)
    {
      workbook = new HSSFWorkbook();
      sheet = workbook.CreateSheet("停台信息");//创建一个名称为Sheet0的表
      int rowCount = dt.Rows.Count;//行数
      int columnCount = dt.Columns.Count;//列数

      //设置列头
      row = sheet.CreateRow(0);//excel第一行设为列头
      for (int c = 0; c < columnCount; c++)
      {
        cell = row.CreateCell(c);
        cell.SetCellValue(dt.Columns[c].ColumnName);
      }

      //设置每行每列的单元格,
      for (int i = 0; i < rowCount; i++)
      {
        row = sheet.CreateRow(i + 1);
        for (int j = 0; j < columnCount; j++)
        {
          cell = row.CreateCell(j);//excel第二行开始写入数据
          cell.SetCellValue(dt.Rows[i][j].ToString());
        }
      }
      using (fs = File.OpenWrite(path))
      {
        workbook.Write(fs);//向打开的这个xls文件中写入数据
        result = true;
      }
    }
  return result;

  }
  catch (Exception ex)
  {
    if (fs != null)
    {
      fs.Close();
    }
    return false;
  }
}

//发送邮件功能

/// <summary>
/// C#发送邮件函数
/// </summary>
/// <param name="from">发送者邮箱</param>
/// <param name="fromer">发送人</param>
/// <param name="to">接受者邮箱</param>
/// <param name="toer">收件人</param>
/// <param name="Subject">主题</param>
/// <param name="Body">内容</param>
/// <param name="file">附件</param>
/// <param name="SMTPHost">smtp服务器</param>
/// <param name="SMTPuser">邮箱</param>
/// <param name="SMTPpass">密码</param>

/// <returns></returns>
public bool sendmail(string sfrom, string sfromer, string sto, string stoer, string sSubject, string sBody, string sfile, string sSMTPHost, string sSMTPuser, string sSMTPpass)
{
////设置from和to地址
MailAddress from = new MailAddress(sfrom, sfromer);
MailAddress to = new MailAddress(sto, stoer);

////创建一个MailMessage对象
MailMessage oMail = new MailMessage(from, to);

//// 添加附件
if (sfile != "")
{
oMail.Attachments.Add(new Attachment(sfile));
}

////邮件标题
oMail.Subject = sSubject;

////邮件内容
oMail.Body = sBody;

////邮件格式
oMail.IsBodyHtml = false;

////邮件采用的编码
oMail.BodyEncoding = System.Text.Encoding.GetEncoding("GB2312");

////设置邮件的优先级为高
oMail.Priority = MailPriority.High;

////发送邮件
SmtpClient client = new SmtpClient();
////client.UseDefaultCredentials = false;
client.Host = sSMTPHost;
client.Credentials = new NetworkCredential(sSMTPuser, sSMTPpass);
client.DeliveryMethod = SmtpDeliveryMethod.Network;
try
{
client.Send(oMail);
return true;
}
catch (Exception err)
{
return false;
}
finally
{
////释放资源
oMail.Dispose();
}

}

//发送邮件

public String SendEmail( )
{
String vResult = "";
//校验值
bool vFlag = true;
//Sql语句
String vSql = @"
Sql语句
";

String vDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
String vPath = "D:\\ExpExcel\\";
vPath += "停台信息 " + vDate + ".xls";
try
{

DataTable dt = new DataTable();
dt = GetExpData(vSql);

vFlag = DataTableToExcel(vPath, dt);
}
catch (Exception ex)
{
vFlag = false;
vResult = "执行失败!" + ex;
}

if (vFlag)
{

String vMDate = DateTime.Now.AddDays(-1).ToString("MM月dd日");

string from = "发送人邮箱";
string fromer = "A.Link";
string to = "接收人邮箱";
string toer = "陈工";
string Subject = "停台信息 " + vDate;\\标题
string file = vPath;\\附件所在路径
string Body = @"邮件内容";
string SMTPHost = "邮箱服务器地址";
string SMTPuser = "发送人账号";
string SMTPpass = "密码";
SendEmail se = new SendEmail();

se.sendmail(from, fromer, to, toer, Subject, Body, file, SMTPHost, SMTPuser, SMTPpass);
vResult = "执行成功!";
}
return vResult;

}

如果需要源码就给我留言,但是我不经常上,不会写博客

WebService--导出excel并将excel发送到邮箱的更多相关文章

  1. C#/Net定时导出Excel并定时发送到邮箱

    一.定时导出Excel并定时发送到邮箱   首先我们先分析一下该功能有多少个小的任务点:1.Windows计划服务 2.定时导出Excel定指定路径 3.定时发送邮件包含附件   接下来我们一个个解决 ...

  2. 如何使用NPOI 导出到excel和导入excel到数据库

    近期一直在做如何将数据库的数据导出到excel和导入excel到数据库. 首先进入官网进行下载NPOI插件(http://npoi.codeplex.com/). 我用的NPOI1.2.5稳定版. 使 ...

  3. c# 高效率导出多维表头excel

    [DllImport("User32.dll", CharSet = CharSet.Auto)] public static extern int GetWindowThread ...

  4. C#导出Excel,并且设置Excel单元格格式,合并单元格.

    注:要添加COM组件 Microsoft Excel 11.0 Object Library  引用. 具体代码如下: using System; using System.Collections.G ...

  5. thinkphp用phpexcel读取excel,并修改列中的值,再导出excel,带往excel里写入图片

    <?php class GetpriceAction extends AdministratorAction { // 文件保存路径 protected $savepath; // 允许上传的文 ...

  6. 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法

    -----转载:http://blog.csdn.net/sgear/article/details/7663502 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格 ...

  7. PHP导出MySQL数据到Excel文件

    PHP导出MySQL数据到Excel文件 转载 常会碰到需要从数据库中导出数据到Excel文件,用一些开源的类库,比如PHPExcel,确实比较容易实现,但对大量数据的支持很不好,很容易到达PHP内存 ...

  8. ASP.NET导出EXCEl方法使用COM.EXCEL不使用EXCEl对象

    第一种:导出gridVIEW中的数据,用hansTABLE做离线表,将数据库中指定表中的所有数据按GRIDVIEW中绑定的ID导出 只能导出数据不能去操作相应的EXCEl表格,不能对EXCEL中的数据 ...

  9. 在ASP.NET中将GridView数据导出到Word、Excel

    在ASP.NET中将GridView数据导出到Word.Excel asp.net,导出gridview数据到Word,Excel,PDF   #region Export to Word, Exce ...

随机推荐

  1. Windows Server 2016-Hyper-V Replica副本功能介绍

    Hyper-V副本是一种可用于复制虚拟机的功能,作为业务连续性解决方案的一部分.从Windows Server 2012中,Hyper-V角色引入了Hyper-V Replica作为虚拟机的内置复制机 ...

  2. 为什么tcp的TIME_WAIT状态要维持2MSL

    本文主要分析为什么TIME_WAIT状态的持续时间是2MSL而不是1MSL,3MSL或其它的时长,而不会详细描述为什么需要TIME_WAIT状态. 阅读本文需要的预备知识: 了解TCP协议的状态变迁: ...

  3. 【我的第一个现实漏洞分析】 CVE-2017-17215 华为智能路由器HG532 漏洞分析笔记

    0x00 基本信息 2017.11.27 Check Point团队报告华为 HG532 产品的远程命令执行漏洞(CVE-2017-17215),Mirai的升级版变种中已经使用该漏洞. 华为HG53 ...

  4. c语言命名规范图

    来自armbbs

  5. 每天一道Rust-LeetCode(2019-06-05)

    每天一道Rust-LeetCode(2019-06-05) 最长回文子串 坚持每天一道题,刷题学习Rust. 接续昨天,最长会问字符串的另一种解法 题目描述 解题过程 //leetcode最快解法 / ...

  6. Codeforces Global Round 4 题解

    技不如人,肝败吓疯…… 开场差点被 A 题意杀了,幸好仔细再仔细看,终于在第 7 分钟过掉了. 跟榜.wtf 怎么一群人跳题/倒序开题? 立刻紧张,把 BC 迅速切掉,翻到了 100+. 开 D.感觉 ...

  7. 1,[VS入门教程] 使用Visual Studio写c语言 入门与技巧精品文~~~~下载安装篇

    Microsoft Visual Studio是微软(俗称巨硬)公司出品的强大IDE(Integrated Development Environment 集成开发环境),功能强大齐全,界面舒服之类的 ...

  8. SpringBoot的ApplicationRunner

    Article1 在开发中可能会有这样的情景.需要在容器启动的时候执行一些内容.比如读取配置文件,数据库连接之类的.SpringBoot给我们提供了两个接口来帮助我们实现这种需求.这两个接口分别为Co ...

  9. CentOS7 Hadoop 安装(完全分布式)

    一.hadoop集群安装模式   单机模式 直接解压,无需任何配置.主要用于测试代码.没有分布式文件系统.   伪分布式 完全分布式的一种形式,只是所有的进程都配置要一个节点上.有分布式文件系统,只不 ...

  10. (十六)golang--匿名函数

    Go支持匿名函数,如果我们某个函数只是使用一次,可以考虑使用匿名函数,匿名函数也可以实现多次调用: 匿名函数的使用方式:(1)在定义匿名函数的时候就直接调用,这种方式匿名函数只调用一次: (2)将匿名 ...