数据导出到Excel(或Word)源代码大全 您所在的位置:网站首页 电子表格代码源 数据导出到Excel(或Word)源代码大全

数据导出到Excel(或Word)源代码大全

2024-06-15 19:27| 来源: 网络整理| 查看: 265

转:http://blog.csdn.net/wonsoft/article/details/3311769

在日常工作中,大家都习惯Office作为办公软件,因此,在开发软件的时,常常会有把数据导出到Excel等Office软件的需求。在此,收集一些常用的导出文件的源程序,希望给大家带来方便。(不断更新)

一、DataSet数据集内数据转化为Excel

// 作用:把DataSet数据集内数据转化为Excel、Word文件 // 描述:这些关于Excel、Word的导出方法,基本可以实现日常须要,其中有些方法可以把数据导出后 //       生成Xml格式,再导入数据库!有些屏蔽内容没有去掉,保留下来方便学习参考用之。    // 备注:请引用Office相应COM组件,导出Excel对象的一个方法要调用其中的一些方法和属性。 public void DataSetToExcel(DataSet ds,string FileName) {    try    {       //Web页面定义       //System.Web.UI.Page mypage=new System.Web.UI.Page();       HttpResponse resp;       resp=HttpContext.Current.Response;       resp.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");       resp.AppendHeader("Content-disposition","attachment;filename="+FileName+".xls");       resp.ContentType="application/ms-excel";       //变量定义       string colHeaders=null;       string Is_item=null;       //显示格式定义       //文件流操作定义       //FileStream fs=new FileStream(FileName,FileMode.Create,FileAccess.Write);       //StreamWriter sw=new StreamWriter(fs,System.Text.Encoding.GetEncoding("GB2312"));       StringWriter sfw=new StringWriter();       //定义表对象与行对象,同时用DataSet对其值进行初始化       System.Data.DataTable dt=ds.Tables[0];       DataRow[] myRow=dt.Select();       int i=0;       int cl=dt.Columns.Count;       //取得数据表各列标题,各标题之间以/t分割,最后一个列标题后加回车符       for(i=0;i          //当前数据写入          for(i=0;i       throw e;    } }

二、DataSet数据集内数据转化为Excel文件(2)

///  /// ExportFiles 的摘要说明。 /// 作用:把DataSet数据集内数据转化为Excel文件 /// 描述:导出Excel文件    /// 备注:请引用Office相应COM组件,导出Excel对象的一个方法要调用其中的一些方法和属性。 ///  public class ExportFiles {     private string filePath = "";     public ExportFiles(string excel_path)     {         //         // TODO: 在此处添加构造函数逻辑         //         filePath = excel_path;     }     ///      /// 将指定的Dataset导出到Excel文件     ///      ///      ///      public bool ExportToExcel(System.Data.DataSet ds, string ReportName)     {         if (ds.Tables[0].Rows.Count == 0)         {             MessageBox.Show("数据集为空");         }         Microsoft.Office.Interop.Excel._Application xlapp = new ApplicationClass();         Workbook xlbook = xlapp.Workbooks.Add(true);         Worksheet xlsheet = (Worksheet)xlbook.Worksheets[1];         Range range = xlsheet.get_Range(xlapp.Cells[1, 1], xlapp.Cells[1, ds.Tables[0].Columns.Count]);         range.MergeCells = true;         xlapp.ActiveCell.FormulaR1C1 = ReportName;         xlapp.ActiveCell.Font.Size = 20;         xlapp.ActiveCell.Font.Bold = true;         xlapp.ActiveCell.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlCenter;         int colIndex = 0;         int RowIndex = 2;         //开始写入每列的标题         foreach (DataColumn dc in ds.Tables[0].Columns)         {             colIndex++;             xlsheet.Cells[RowIndex, colIndex] = dc.Caption;         }         //开始写入内容         int RowCount = ds.Tables[0].Rows.Count;//行数         for (int i = 0; i                  xlsheet.Cells[RowIndex, colIndex] = ds.Tables[0].Rows[i][colIndex - 1];//dg[i, colIndex - 1];                 xlsheet.Cells.ColumnWidth = ds.Tables[0].Rows[i][colIndex - 1].ToString().Length;             }         }         xlbook.Saved = true;         xlbook.SaveCopyAs(filePath);         xlapp.Quit();         GC.Collect();         return true;     }     public bool ExportToExcelOF(System.Data.DataSet ds, string ReportName)     {         if (ds.Tables[0].Rows.Count == 0)         {             MessageBox.Show("数据集为空");         }         string FileName = filePath;         //System.Data.DataTable dt = new System.Data.DataTable();         FileStream objFileStream;         StreamWriter objStreamWriter;         string strLine = "";         objFileStream = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write);         objStreamWriter = new StreamWriter(objFileStream, System.Text.Encoding.Unicode);         strLine = ReportName;         objStreamWriter.WriteLine(strLine);         strLine = "";         for (int i = 0; i              strLine = strLine + (i + 1) + Convert.ToChar(9);             for (int j = 1; j      HttpContext.Current.Response.Charset ="UTF-8";     HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.Default;     HttpContext.Current.Response.ContentType ="application/ms-excel";     HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename="+""+FileName+".xls");     ctl.Page.EnableViewState =false;     System.IO.StringWriter  tw = new System.IO.StringWriter();     HtmlTextWriter hw = new HtmlTextWriter(tw);     ctl.RenderControl(hw);     HttpContext.Current.Response.Write(tw.ToString());     HttpContext.Current.Response.End(); }               必须有下面这句!否则不会通过! public override void VerifyRenderingInServerForm(Control control) {     // Confirms that an HtmlForm control is rendered for }

五、DataTable导出到Excel

using System; using Microsoft.Office.Interop.Excel; using System.Windows.Forms; namespace DongVI {  ///   /// DataTable导出到Excel  /// 整理:dongVi  ///   public class DataTableToExcel  {   private DataTableToExcel()   {   }   ///    /// 导出Excel   ///    /// 要导出的DataTable   public static void ExportToExcel(System.Data.DataTable dt )   {    if (dt == null) return;        Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();    if (xlApp == null)    {     // lblMsg.Text = "无法创建Excel对象,可能您的电脑未安装Excel";     MessageBox.Show( "无法创建Excel对象,可能您的电脑未安装Excel" );     return;    }    System.Windows.Forms.SaveFileDialog saveDia = new SaveFileDialog();    saveDia.Filter = "Excel|*.xls";    saveDia.Title = "导出为Excel文件";    if(saveDia.ShowDialog()== System.Windows.Forms.DialogResult.OK     && !string.Empty.Equals(saveDia.FileName))    {     Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;     Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);     Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1     Microsoft.Office.Interop.Excel.Range range = null;     long totalCount = dt.Rows.Count;     long rowRead = 0;     float percent = 0;     string fileName = saveDia.FileName;     //写入标题     for (int i = 0; i       for (int i = 0; i       range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideVertical].Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;     }     try     {      workbook.Saved = true;      workbook.SaveCopyAs(fileName);     }     catch (Exception ex)     {      //lblMsg.Text = "导出文件时出错,文件可能正被打开!/n" + ex.Message;      MessageBox.Show( "导出文件时出错,文件可能正被打开!/n" + ex.Message );      return;     }     workbooks.Close();     if (xlApp != null)     {      xlApp.Workbooks.Close();      xlApp.Quit();      int generation = System.GC.GetGeneration(xlApp);      System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);      xlApp = null;      System.GC.Collect(generation);     }     GC.Collect();//强行销毁     #region 强行杀死最近打开的Excel进程     System.Diagnostics.Process[] excelProc = System.Diagnostics.Process.GetProcessesByName("EXCEL");     System.DateTime startTime = new DateTime();     int m, killId = 0;     for (m = 0; m        startTime = excelProc[m].StartTime;       killId = m;      }     }     if (excelProc[killId].HasExited == false)     {      excelProc[killId].Kill();     }     #endregion     MessageBox.Show( "导出成功!" );    }   }  } }

六、DataTable导出到excel(2)

StringWriter stringWriter = new StringWriter(); HtmlTextWriter htmlWriter = new HtmlTextWriter( stringWriter ); DataGrid excel = new DataGrid(); System.Web.UI.WebControls.TableItemStyle AlternatingStyle = new TableItemStyle(); System.Web.UI.WebControls.TableItemStyle headerStyle = new TableItemStyle(); System.Web.UI.WebControls.TableItemStyle itemStyle = new TableItemStyle(); AlternatingStyle.BackColor = System.Drawing.Color.LightGray; headerStyle.BackColor =System.Drawing.Color.LightGray; headerStyle.Font.Bold = true; headerStyle.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center; itemStyle.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;;  excel.AlternatingItemStyle.MergeWith(AlternatingStyle); excel.HeaderStyle.MergeWith(headerStyle); excel.ItemStyle.MergeWith(itemStyle);  excel.GridLines = GridLines.Both; excel.HeaderStyle.Font.Bold = true; excel.DataSource = dt.DefaultView;//输出DataTable的内容 excel.DataBind(); excel.RenderControl(htmlWriter);    string filestr = "d://data//"+filePath;  //filePath是文件的路径 int pos = filestr.LastIndexOf( "//"); string file = filestr.Substring(0,pos); if( !Directory.Exists( file ) ) {   Directory.CreateDirectory(file); } System.IO.StreamWriter sw = new StreamWriter(filestr); sw.Write(stringWriter.ToString()); sw.Close();

七、通过SQL直接导出到Excel数据库

exec master..xp_cmdshell @# bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout c:/test.xls -c -S"soa" -U"sa" -P"sa" @#

    注意:参数的大小写,另外这种方法写入数据的时候没有标题。

    关于通过SQL读取EXCEL的方法请参见:http://blog.csdn.net/wonsoft/archive/2008/11/16/3312320.aspx

八、用OleDB 把 DataSet 数据导出到 Excel文件里

//dt为数据源(数据表)  //ExcelFileName 为要导出的Excle文件 //ModelFile为模板文件,该文件与数据源中的表一致。否则数据会导出失败。 //ModelFile文件里,需要有一张 与 dt.TableName 一致的表,而且字段也要一致。 //注明:如果不用ModelFile的话,可以用一个空白Excel文件,不过,要去掉下面创建表的注释,让OleDb自己创建一个空白表。 public static string TableToExcelFile(DataTable dt,string ExcelFileName,string ModelFile) {     File.Copy(ModelFile,ExcelFileName);  //复制一个空文件,提供写入数据用          if(File.Exists(ExcelFileName)==false)     {         return "系统创建临时文件失败,请与系统管理员联系!";     }     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="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ExcelFileName+";Extended Properties=Excel 8.0;";              //生成创建表的脚本     //----sb.Append("DROP TABLE "+dt.TableName);          /*     sb.Append("CREATE TABLE ");     sb.Append(dt.TableName + " ( ");     for(int i=0;i         objConn.Open();         //objCmd.ExecuteNonQuery();     }     catch(Exception e)     {         return "在Excel中创建表失败,错误信息:" + e.Message;     }     sb.Remove(0,sb.Length);     sb.Append("INSERT INTO ");     sb.Append(dt.TableName + " ( ");     for(int i=0;i         if(i              param[i].Value = row[i];         }         objCmd.ExecuteNonQuery();     }     return "数据已成功导入Excel"; }  //   Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=754176

九、利用OLEDB,以excel为数据库,把dataset中的数据导入到excel文件中

public static void exportToExcelByDataset(string filePath, DataSet ds,XmlNode node) {     string sqlstr;      if(fi.Exists)     {          fi.Delete();          //throw new Exception("文件删除失败");         }     else     {          fi.Create();     }         string mailto:sqlcon=@%22Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended ProPerties=Excel 8.0;";     OleDbConnection olecon = new OleDbConnection(sqlcon);     OleDbCommand olecmd = new OleDbCommand();     olecmd.Connection = olecon;     olecmd.CommandType = CommandType.Text;     try     {         olecon.Open();                      XmlNode nodec=node.SelectSingleNode("./Method/ShowField");         int ii = 0;         sqlstr = "CREATE TABLE sheet1(";         foreach(XmlNode xnode in nodec.ChildNodes )         {            if(ii == nodec.ChildNodes.Count - 1)            {                if(xnode.Attributes["type"].Value.ToLower() == "int"||xnode.Attributes["type"].Value.ToLower() == "decimal")                {                    sqlstr=sqlstr + xnode.Attributes["displayname"].Value + " number)";                       }                else                {                    sqlstr=sqlstr + xnode.Attributes["displayname"].Value + " text)";                }                // sqlstr=sqlstr + xnode.Attributes["displayname"].Value + " text)";            }            else            {                if(xnode.Attributes["type"].Value.ToLower() == "int"||xnode.Attributes["type"].Value.ToLower() == "decimal")                {                     sqlstr=sqlstr + xnode.Attributes["displayname"].Value + " number,";                       }                else                {                     sqlstr=sqlstr + xnode.Attributes["displayname"].Value + " text,";                }            }            //  sqlstr =sqlstr + xnode.Attributes["displayname"].Value + " text";                   ii++;        }        olecmd.CommandText = sqlstr;        olecmd.ExecuteNonQuery();        for(int i=0;i                 if(jj == nodec.ChildNodes.Count-1)                 {                     if(inode.Attributes["type"].Value.ToLower() == "int"||inode.Attributes["type"].Value.ToLower() == "decimal")                     {                          sqlstr = sqlstr + isnull(ds.Tables[0].Rows[i].ItemArray[jj].ToString()) + ")" ;                       }                     else                     {                          sqlstr = sqlstr + "'" + isnull(ds.Tables[0].Rows[i].ItemArray[jj].ToString().Replace("'","''")) + "')" ;                     }                 }                 else                 {                     if(inode.Attributes["type"].Value.ToLower() == "int"||inode.Attributes["type"].Value.ToLower() == "decimal")                     {                          sqlstr = sqlstr + isnull(ds.Tables[0].Rows[i].ItemArray[jj].ToString()) + "," ;                     }                     else                     {                          sqlstr = sqlstr + "'" + isnull(ds.Tables[0].Rows[i].ItemArray[jj].ToString().Replace("'","''")) + "'," ;                     }                 }                 jj++;            }            olecmd.CommandText = sqlstr;            olecmd.ExecuteNonQuery();         }           MessageBox.Show(@"Excel文件:" + filePath + " 导出成功!");     }     catch(Exception ex)     {         MessageBox.Show(ex.Message);     }     finally     {         olecmd.Dispose();         olecon.Close();         olecon.Dispose();     } } // 判断对象为空 private static string isnull(string obj) {     if(obj.Length >0)     {      return obj;     }     else     {      return "null";     }  }

鸣谢:感谢各位作者的无私奉献!世界有你们真精彩。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有