c#中将数据集导出为excel文件

来源:互联网 发布:9553软件下载。 编辑:程序博客网 时间:2024/04/29 02:35

  #region 响应打印功能
  private void btPrint_Click(object sender, EventArgs e)
  {
   print(ds);
  }
  #endregion

  #region 得到导出数据的Excel路径   ************YRX完成
  private void button1_Click(object sender, EventArgs e)
  {
   //打开保存对话框,得到Excel路径
   SaveFileDialog saveFileDialog1 = new SaveFileDialog();
   saveFileDialog1.Filter = "Excel|*.xls|所有文件|*.*";
   saveFileDialog1.Title = "Save an Excel File";
   saveFileDialog1.ShowDialog();
   //判断文件是否已经存在
   string MyFileName=saveFileDialog1.FileName.ToString().Trim();
   if(MyFileName.Length<1)
    return;
   //判断文件是否存在
   if(File.Exists(MyFileName))
   {
    this.SaveFP2toExcel1(MyFileName,this.dsStockAccount);//不需要创建文件
   }
   else
   {
    this.SaveFP2toExcel2(MyFileName,this.dsStockAccount);//必须创建文件
   }

  }
  #endregion

  #region 写入Excel文档(不需要新建文件)   ************YRX完成
  /// <summary>
  /// 写入Excel文档
  /// </summary>
  /// <param name="Path">文件名称</param>
  /// <param name="ds2Excel">被导出的数据集</param>
  
  public void SaveFP2toExcel1(string Path,DataSet ds2Excel)
  {
   try
   {
    //创建Excel应用程序
    Excel.Application xApp=new Excel.ApplicationClass();    
    if (xApp == null)  
    {  
     MessageBox.Show("错误:Excel不能打开!");  
     return ; 
    }
    //打开指定路径的Excel文件
    Excel._Workbook xBook=xApp.Workbooks.Open(Path,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value); 
    Excel.Sheets xSheets=xBook.Worksheets;
    Excel._Worksheet xSheet=(Excel._Worksheet) xSheets.get_Item(1); 
    if (xSheet == null)  
    {  
     MessageBox.Show("错误:工作表为空!"); 
     return;
    }
    //写数据集表头
    for(int k=0;k<ds2Excel.Tables[0].Columns.Count;k++)
     xSheet.Cells[1,k+1]=ds2Excel.Tables[0].Columns[k].ColumnName.ToString().Trim();
    //写数据集数据
    for(int i=0;i<ds2Excel.Tables[0].Rows.Count ;i++)
    {
     for(int j=0;j<ds2Excel.Tables[0].Columns.Count;j++)
      xSheet.Cells[i+2,j+1]=ds2Excel.Tables[0].Rows[i][j];
    }
    //保存文件
    xBook.Save();
    //显示文件
    xApp.Visible = true; 
    //
    //释放资源
    //
    Marshal.ReleaseComObject(xSheet) ;
    xSheet=null ;
    Marshal.ReleaseComObject(xSheets) ;
    xSheets=null ;
   
    Marshal.ReleaseComObject(xBook) ;
    xBook=null ;
    xApp.Quit();
    Marshal.ReleaseComObject(xApp);
    xApp = null ;
    GC.Collect();//强行销毁

   }
   catch(Exception ex)
   {
    MessageBox.Show("写入Excel发生错误:"+ex.Message );
   }
  }
  #endregion

  #region 写入Excel文档(需要新建文件)   ************YRX完成
  /// <summary>
  /// 写入Excel文档
  /// </summary>
  /// <param name="Path">文件名称</param>
  /// <param name="ds2Excel">被导出的数据集</param>
  
  public void SaveFP2toExcel2(string Path,DataSet ds2Excel)
  {
   try
   {
    //创建Excel应用程序
    Excel.Application xApp=new Excel.ApplicationClass();    
    if (xApp == null)  
    {  
     MessageBox.Show("错误:Excel不能打开!");  
     return ; 
    }
    object objOpt = Missing.Value;
    Excel.Workbook xBook = xApp.Workbooks.Add(true) ;//添加新工作簿
    Excel.Sheets xSheets = xBook.Sheets ;
    Excel._Worksheet xSheet = null ;
    //
    //创建空的sheet
    //
    xSheet = (Excel._Worksheet)(xBook.Sheets.Add(objOpt,objOpt,objOpt,objOpt)) ;

    if (xSheet == null)  
    {  
     MessageBox.Show("错误:工作表为空!"); 
     return;
    }
    //写数据集表头
    for(int k=0;k<ds2Excel.Tables[0].Columns.Count;k++)
     xSheet.Cells[1,k+1]=ds2Excel.Tables[0].Columns[k].ColumnName.ToString().Trim();
    //写数据集数据
    for(int i=0;i<ds2Excel.Tables[0].Rows.Count ;i++)
    {
     for(int j=0;j<ds2Excel.Tables[0].Columns.Count;j++)
      xSheet.Cells[i+2,j+1]=ds2Excel.Tables[0].Rows[i][j];
    }
    //保存文件
    xBook.Saved = true ;
    xBook.SaveCopyAs(Path) ;

    //显示文件
    xApp.Visible = true; 
    //
    //释放资源
    //
    Marshal.ReleaseComObject(xSheet) ;
    xSheet=null ;
    Marshal.ReleaseComObject(xSheets) ;
    xSheets=null ;
   
    Marshal.ReleaseComObject(xBook) ;
    xBook=null ;
    xApp.Quit();
    Marshal.ReleaseComObject(xApp);
    xApp = null ;
    GC.Collect();//强行销毁

   }
   catch(Exception ex)
   {
    MessageBox.Show("写入Excel发生错误:"+ex.Message );
   }
  }
  #endregion 

原创粉丝点击