asp.net导出数据到Excel的方法(完全无组件,不用调用Excel.exe) - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

asp.net导出数据到Excel的方法(完全无组件,不用调用Excel.exe)

发表时间:2020-10-18

发布人:葵宇科技

浏览次数:37

 今天把大家最常用的功能 asp.net导出数据到Excel, 通常的方法 是组件形式的,但是ASP.NET 对杀死Excel.exe支持不够好,特别还需要设置dcom太麻烦了.现在我给大家的是我做 开发,已经应用到实际项目的方法,该方法不用调用Excel.exe进程.有不明白的,可以在下面留言,我会做解答的. using System;

  using System.Text;
  using System.Data;
  using System.Data.OleDb;
  
  namespace PowerAgent.DBUtility
  {
      /**//// <summary>
      /// DataToExcel 的摘要说明。
  
      /// DataToExcel 的摘要说明。
      /// </summary>
      public class DataToExcel
      {
          const string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;";
  
          public DataToExcel()
          {
          }
  
          public string DataTableToExcel(DataTable dt, string excelPath)
          {
              if (dt == null)
              {
                  return "DataTable不能为空";
              }
  
              int rows = dt.Rows.Count;
              int cols = dt.Columns.Count;
              StringBuilder sb;
              string connString;
  
              if (rows == 0)
              {
                  return "没有数据";
              }
  
              sb = new StringBuilder();
              connString = string.Format(ConnectionString, excelPath);
  
              //生成创建表的脚本
              sb.Append("CREATE TABLE ");
              sb.Append(dt.TableName + " ( ");
  
              for (int i = 0; i < cols; i++)
              {
                  if (i < cols - 1)
                      sb.Append(string.Format("{0} varchar,", dt.Columns.ColumnName));
                  else
                      sb.Append(string.Format("{0} varchar)", dt.Columns.ColumnName));
              }
  
              using (OleDbConnection objConn = new OleDbConnection(connString))
              {
                  OleDbCommand objCmd = new OleDbCommand();
                  objCmd.Connection = objConn;
  
                  objCmd.CommandText = sb.ToString();
  
                  try
                  {
                      objConn.Open();
                      objCmd.ExecuteNonQuery();
                  }
                  catch (Exception e)
                  {
                      return "在Excel中创建表失败,错误信息:" + e.Message;
                  }
  
                  生成插入数据脚本#region 生成插入数据脚本
                  sb.Remove(0, sb.Length);
                  sb.Append("INSERT INTO ");
                  sb.Append(dt.TableName + " ( ");
  
                  for (int i = 0; i < cols; i++)
                  {
                      if (i < cols - 1)
                          sb.Append(dt.Columns.ColumnName + ",");
                      else
                          sb.Append(dt.Columns.ColumnName + ") values (");
                  }
  
                  for (int i = 0; i < cols; i++)
                  {
                      if (i < cols - 1)
                          sb.Append("@" + dt.Columns.ColumnName + ",");
                      else
                          sb.Append("@" + dt.Columns.ColumnName + ")");
                  }
                  #endregion
  
  
                  //建立插入动作的Command
                  objCmd.CommandText = sb.ToString();
                  OleDbParameterCollection param = objCmd.Parameters;
  
                  for (int i = 0; i < cols; i++)
                  {
                      param.Add(new OleDbParameter("@" + dt.Columns.ColumnName, OleDbType.VarChar));
                  }
  
                  //遍历DataTable将数据插入新建的Excel文件中
                  foreach (DataRow row in dt.Rows)
                  {
                      for (int i = 0; i < param.Count; i++)
                      {
                          param.Value = row;
                      }
  
                      objCmd.ExecuteNonQuery();
                  }
  
                  return "数据已成功导入Excel";
              }//end using
          }
      }//end class
  }
 
昆明软件开发公司中的佼佼者,致力定制软件开发,昆明软件开发请联系昆明葵宇科技有限公司,电话:15987118523。

相关案例查看更多