导出到excel的类(一)

本文介绍了一个使用C#编写的Excel报表生成类,该类能够将DataSet中的数据填充到指定的Excel模板中,并保存为新的Excel文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System;
using System.IO;
using System.Reflection;
using System.Data;
using System.Data.SqlClient;
using RFID.PublicClass.DataBase;


namespace RFID.PublicClass.ExcelReport
{
 /// <summary>
 /// ExcelReport 的摘要说明。
 /// </summary>
 public class ExcelReport
 {
  private  static Excel.ApplicationClass ExcelApp = null;
  private   static Excel.Workbooks   ExcelBooks=null;
  private  static Excel.Workbook    ExcelBook=null;
  private static Excel.Worksheet   ExcelSheet=null;
  public static string FilePath=null;
  public static string FormPath=null;
    
        //构造函数,完成excel属性的付值。
  public ExcelReport(string OpenPath,string SavePath)
  {  

   try
   
   {   FormPath=OpenPath;//模板位置
    FilePath=SavePath;//excel文件位置
    ExcelApp=new Excel.ApplicationClass();
    object missing=Missing.Value;
    ExcelBooks=ExcelApp.Workbooks;
    ExcelBook=(Excel.Workbook)ExcelApp.Workbooks.Open(FormPath,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing);
    ExcelSheet=(Excel.Worksheet)ExcelBook.ActiveSheet;
    ExcelApp.Visible=false;
    ExcelApp.DisplayAlerts=false; 
   }
   catch(Exception e)
   {
    CloseExcelForm();
       new Exception(e.Message);
   }
   //
   // TODO: 在此处添加构造函数逻辑
   //
  }
  public static void InsertExcel(DataSet dSet,int StartRow,int StartCol,string Table)
  { 
   try
   {         
          int RowCount=dSet.Tables[Table].Rows.Count;
    int ColCount=dSet.Tables[Table].Columns.Count;

    for(int i=StartRow;i<=(StartRow+RowCount-1);i++)
    {
     for(int j=StartCol;j<=(StartCol+ColCount-1);j++)
     {
      string values=dSet.Tables[Table].Rows[i-StartRow][j-StartCol].ToString();
      ExcelApp.Cells[i,j]=values;
     }
    } 
    dSet.Clear();
    ExcelSheet.SaveAs(FilePath,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
    ExcelSheet.Activate();
    ExcelApp.Visible=true;   

   }
   catch
   {
    CloseExcelForm();
   }           


  }
          
  ~ExcelReport()
   {
            CloseExcelForm();
   }
  public static void  CloseExcelForm()
  {
    try
   {
    ExcelBooks = null;
    ExcelBook = null;
    ExcelSheet = null;
    if(ExcelApp!= null)
    {
     ExcelApp.Quit();
     ExcelApp = null;
    }
   }
   finally
   {
    GC.Collect();
    GC.WaitForPendingFinalizers();
   }
  }  
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值