C#中对Excel文件的操作

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Diagnostics;

/// <summary>
/// ExportExcelretire 的摘要说明
/// </summary>
public class ExportExcelretire
{
   
private Excel.ApplicationClass ExcelObj = null ;       // Excel对象
    private Excel._Workbook xBk;                         // 工作薄
    private Excel._Worksheet xSt;                        // 工作Sheet
    private string strTemplateFile;                         // 模板文件
    private string strSavefile;                             // 保存的文件
    private string strFile;
   
public ExportExcelretire()
    {
        System.Reflection.Missing miss
= System.Reflection.Missing.Value;
    }
   
#region 连接Excel
   
public int connectExcel( string templatName)
    {
       
try
        {
            strTemplateFile
= getTemplatePath(templatName); // 模板文件
            ExcelObj = new Excel.ApplicationClass();
           
object missing = System.Reflection.Missing.Value;
           
if (templatName == "" )
            {
                xBk
= ExcelObj.Workbooks.Add( true );
            }
           
else
            {

                xBk
= ExcelObj.Workbooks.Open(strTemplateFile,
                    missing, missing, missing, missing,
                    missing, missing, missing, missing,
                    missing, missing, missing, missing, missing, missing);
            }

            xBk.SaveAs(getSaveFile(), Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing,
                Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
            xSt
= (Excel._Worksheet)xBk.ActiveSheet;
           
return 1 ;
        }
       
catch (Exception e)
        {
           
string jj = e.Message.ToString();
           
return 0 ;
        }
    }
   
#endregion

   
#region 根据数据结果集,文件模板,开始行值生成Excel文件
   
/// <summary>
   
/// 根据数据结果集,文件模板,开始行值生成Excel文件
   
/// </summary>
   
/// <param name="ds"> 要传入到Excel的数据集 </param>
   
/// <param name="strTitle"> 文件的标题 </param>
   
/// <param name="templatName"> 文档模版 </param>
   
/// <returns></returns>
    public int createTitleExcel(DataSet ds, string strTitle, string templatName)
    {
       
if (ds.Tables[ 0 ].Rows.Count == 0 ) return 0 ;

       
if (connectExcel(templatName) == 1 )
        {
           
try
            {

                ExcelObj.Visible
= false ;

                xSt.Cells[
2 , 2 ] = ds.Tables[ 0 ].Rows[ 0 ][ " xm " ].ToString();
                xSt.get_Range(xSt.Cells[
2 , 2 ], xSt.Cells[ 2 , 2 ]).HorizontalAlignment = - 4108 ;
                xSt.get_Range(xSt.Cells[
2 , 2 ], xSt.Cells[ 2 , 2 ]).Borders.LineStyle = 1 ;

                xSt.Cells[
2 , 5 ] = ds.Tables[ 0 ].Rows[ 0 ][ " xb " ].ToString();
                xSt.get_Range(xSt.Cells[
2 , 5 ], xSt.Cells[ 2 , 5 ]).HorizontalAlignment = - 4108 ;
                xSt.get_Range(xSt.Cells[
2 , 5 ], xSt.Cells[ 2 , 5 ]).Borders.LineStyle = 1 ;

                xSt.Cells[
2 , 9 ] = ds.Tables[ 0 ].Rows[ 0 ][ " csrq " ].ToString();
                xSt.get_Range(xSt.Cells[
2 , 9 ], xSt.Cells[ 2 , 9 ]).HorizontalAlignment = - 4108 ;
                xSt.get_Range(xSt.Cells[
2 , 9 ], xSt.Cells[ 2 , 9 ]).Borders.LineStyle = 1 ;
                xBk.Save();
            }
           
catch (Exception e)
            {
                Console.Write(e.GetBaseException());
                Console.Write(e.ToString());
               
return 0 ;
            }
           
finally
            {
                ExcelObj.Quit();
                System.Runtime.InteropServices.Marshal.ReleaseComObject(xSt);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(xBk);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(ExcelObj);
                GC.Collect();

            }
        }
       
else
        {
           
if (xSt != null )
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(xSt);
                GC.Collect();
            }
           
if (xBk != null )
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(xBk);
                GC.Collect();
            }
           
if (ExcelObj != null )
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(ExcelObj);
                GC.Collect();
            }
           
return 0 ;
        }

       
return 1 ;
    }

   
#endregion

   
#region 根据传入的模版名设置绝对路径中的模板名
   
/// <summary>
   
/// 根据传入的模版名设置绝对路径中的模板名
   
/// </summary>
   
/// <param name="strTemplateName"> 模板名 </param>
   
/// <returns></returns>
    private string getTemplatePath( string strTemplateName)
    {
       
string strTemplatePath = System.Configuration.ConfigurationSettings.AppSettings[ " TempletFilePath " ];
        strTemplatePath
= AppDomain.CurrentDomain.BaseDirectory + strTemplatePath + strTemplateName;
       
return strTemplatePath;
    }
   
#endregion

   
#region   设置保存到临时文件中的文件名
   
/// <summary>
   
/// 设置保存到临时文件中的文件名
   
/// </summary>
   
/// <returns> 临时文件名 </returns>
    private string getSaveFile()
    {
       
string strSvaePath = System.Configuration.ConfigurationSettings.AppSettings[ " SaveFilePath " ];
       
this .strFile = System.DateTime.Now.ToFileTimeUtc().ToString() + " .xls " ;
        strSavefile
= strSvaePath + this .strFile;
        strSvaePath
= AppDomain.CurrentDomain.BaseDirectory + strSavefile;
       
return strSvaePath;
    }
   
#endregion

   
#region 取得文件的相对路径
   
public string getVirteFile()
    {
       
return strSavefile;
    }
   
#endregion

   
#region 下载文件
   
/// <summary>
   
/// 下载文件
   
/// 传过一个带一个文件夹的文件
   
/// 如temp/12345.xls
   
/// </summary>
   
/// <param name="fileName"></param>
    public void DownloadExcelFile( string fileName, string FileNamefalse)
    {
       
if (fileName != "" && fileName != null )
        {
            System.IO.FileInfo file
= new System.IO.FileInfo(AppDomain.CurrentDomain.BaseDirectory + fileName);
           
if (file.Exists)
            {
               
string FileName = FileNamefalse;
               
string ExtendName = file.Name;
               
if (ExtendName.Length > 4 )
                {
                   
int i = ExtendName.LastIndexOf( " . " );
                    ExtendName
= ExtendName.Substring(i);
                    FileName
+= ExtendName;
                }
               
// Response.AppendHeader(@"Content-Disposition", @"attachment;filename=" + HttpUtility.UrlEncode("报表.xls",System.Text.Encoding.UTF8));
               
// 这句话中的 attachment 改成 inline 就可以了
                HttpContext.Current.Response.Clear();
                HttpContext.Current.Response.AddHeader(
" Content-Disposition " , " attachment; filename= " + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8));
                HttpContext.Current.Response.AddHeader(
" Content-Length " , file.Length.ToString());
                HttpContext.Current.Response.ContentType
= " application/octet-stream " ;
                HttpContext.Current.Response.Filter.Close();
                HttpContext.Current.Response.WriteFile(file.FullName);
                HttpContext.Current.Response.End();
            }
           
else
            {
                HttpContext.Current.Response.Write(
" 对不起,文件 " + AppDomain.CurrentDomain.BaseDirectory + fileName + " 不存在 " );
            }
        }
    }
   
#endregion

}

你可能感兴趣的:(Excel)