zoukankan      html  css  js  c++  java
  • Excellib代码

    Excellib代码 
    /********************************************************  
     * Code Base of C#  
     * Excel report develop tools  
     * Create by huang pinghua 2008/12/28, all rights reserved.  
     * *****************************************************/  
    using System;  
    using System.Collections.Generic;  
    using System.Text;  
    using System.Reflection;  
    using Microsoft.Office.Core;  
    using Microsoft.Office.Interop.Excel;  
    using System.IO;  
     
    namespace ExcelX.ExcelLib  
    {  
        /// <summary>  
        /// Excel 操作代理  
        /// </summary>  
        public class ExcelAgent  
        {  
            private ApplicationClass _app = null;  
            private _Workbook _wb = null;  
            private _Worksheet _ws = null;  
            private string _filePath = "";  
            private int _shIndex = 0; // 1 based index  
     
            public event EventHandler ExcelExceptionOccured;  
     
            /// <summary>  
            /// 当前Sheet  
            /// </summary>  
            public int SheetIndex { get { return this._shIndex; } }  
     
            /// <summary>  
            /// 当前文件名  
            /// </summary>  
            public string FileName { get { return this._filePath; } }  
     
            #region private operations   
            /// <summary>  
            /// 打开App  
            /// </summary>  
            private void OpenApp()  
            {  
                this._app = new ApplicationClass();  
                this._app.Visible = false;  
            }  
     
            /// <summary>  
            /// 释放资源  
            /// </summary>  
            /// <param name="o"></param>  
            private void ReleaseCom(object o)  
            {  
                try  
                {  
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(o);//强制释放一个对象  
                }  
                catch { }  
                finally  
                {  
                    o = null;  
                }  
            }  
     
            /// <summary>  
            /// 检查App  
            /// </summary>  
            private bool CheckApp()  
            {  
                if (this._app == null)  
                {  
                    if (this.ExcelExceptionOccured != null)  
                    {  
                        this.ExcelExceptionOccured(this, new ErrorEventArgs(new Exception("Application对象未初始化")));  
                    }  
                    return false;  
                }  
     
                return true;  
            }  
     
            /// <summary>  
            /// 检查Book  
            /// </summary>  
            private bool CheckWorkBook()  
            {  
                if (this._wb == null)  
                {  
                    if (this.ExcelExceptionOccured != null)  
                    {  
                        this.ExcelExceptionOccured(this, new ErrorEventArgs(new Exception("Workbook对象未初始化")));  
                    }  
     
                    return false;  
                }  
     
                return true;  
            }  
     
            /// <summary>  
            /// 检查Sheet  
            /// </summary>  
            private bool CheckSheet()  
            {  
                if (this._ws == null)  
                {  
                    if (this.ExcelExceptionOccured != null)  
                    {  
                        this.ExcelExceptionOccured(this, new ErrorEventArgs(new Exception("Worksheet对象未初始化")));  
                    }  
     
                    return false;  
                }  
     
                return true;  
            }  
            #endregion  
     
            #region basic operation  
            /// <summary>  
            /// 打开文件  
            /// </summary>  
            /// <param name="filePath"></param>  
            public void Open(string filePath)  
            {  
                // Check Application   
                if (!this.CheckApp()) return;  
     
                // Open workbook  
                this._filePath = filePath;  
                this._wb = this._app.Workbooks._Open(filePath, Missing.Value, Missing.Value, Missing.Value, Missing.Value  
                        , Missing.Value, Missing.Value, Missing.Value, Missing.Value  
                        , Missing.Value, Missing.Value, Missing.Value, Missing.Value);  
     
                // set default sheet  
                this.SetCurrentSheet(1);  
            }  
     
            /// <summary>  
            /// 自动打开Excel对象  
            /// </summary>  
            public ExcelAgent()  
            {  
                this.OpenApp();  
            }  
     
            /// <summary>  
            /// 打开excel文件  
            /// </summary>  
            /// <param name="filePath"></param>  
            public ExcelAgent(string filePath)  
            {  
                this.OpenApp();  
                this.Open(filePath);  
            }  
     
            /// <summary>  
            /// 保存当前文档  
            /// </summary>  
            public void Save()  
            {  
                // check workbook   
                if (!this.CheckWorkBook()) return;  
     
                // save the book  
                this._wb.Save();  
                  
            }  
     
            /// <summary>  
            /// 另存当前文档  
            /// </summary>  
            /// <param name="filePath"></param>  
            public void Save(string filePath)  
            {  
                // check workbook   
                if (!this.CheckWorkBook()) return;  
     
                // save work book  
                this._filePath = filePath;  
                bool b = this._app.DisplayAlerts;  
                this._app.DisplayAlerts = false;  
     
                // save work book              
                this._wb.SaveAs(this._filePath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, XlSaveAsAccessMode.xlNoChange,  
                        Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);  
     
                this._app.DisplayAlerts = b;  
            }  
     
            /// <summary>  
            /// 关闭当前操作  
            /// </summary>  
            public void Close()  
            {  
                if (this._app == null) return;  
                if (this._wb != null)  
                {  
                    this._wb.Close(false, Missing.Value, Missing.Value);  
                    ReleaseCom(this._wb);  
                    this._wb = null;  
                }  
                this._app.Quit();  
                ReleaseCom(this._app);  
                this._app = null;  
     
            }  
     
            /// <summary>  
            /// 设置当前工作Sheet(序号:从1记起)  
            /// </summary>  
            /// <param name="sheetIndex"></param>  
            public void SetCurrentSheet(int sheetIndex)  
            {  
                // check workbook   
                if (!this.CheckWorkBook()) return;  
     
                // set sheet object  
                this._shIndex = sheetIndex;  
                this._ws = (_Worksheet)this._wb.Worksheets[sheetIndex];  
            }  
     
            /// <summary>  
            /// 设置当前工作Sheet(序号:从1记起)  
            /// </summary>  
            /// <param name="sheetIndex"></param>  
            public void SetCurrentSheet(string SheetName)  
            {  
                // check workbook   
                if (!this.CheckWorkBook()) return;  
     
                // set sheet object  
                this._ws = (_Worksheet)this._wb.Worksheets[SheetName];  
                this._shIndex = this._ws.Index;  
            }  
     
            /// <summary>  
            /// 删除一个工作表  
            /// </summary>  
            /// <param name="SheetName"></param>  
            public void DeleteSheet()  
            {  
                // check workbook   
                if (!this.CheckSheet()) return;  
     
                this._ws.Delete();  
            }  
     
            /// <summary>  
            /// 改名  
            /// </summary>  
            /// <param name="newName"></param>  
            public void RenameSheet(string newName)  
            {  
                // check workbook   
                if (!this.CheckSheet()) return;  
     
                this._ws.Name = newName;  
            }  
     
            /// <summary>  
            /// 创建Sheet  
            /// </summary>  
            /// <param name="newName"></param>  
            public void CreateSheet(string newName)  
            {  
                // check workbook   
                if (!this.CheckWorkBook()) return;  
     
                this._wb.Worksheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value);  
            }  
     
            /// <summary>  
            /// 获取数量  
            /// </summary>  
            /// <returns></returns>  
            public int GetSheetCount()  
            {  
                // check workbook   
                if (!this.CheckWorkBook()) return -1;  
     
                return this._wb.Worksheets.Count;  
            }  
            #endregion  
     
            #region sheet operation  
            /// <summary>  
            /// 设置单元值  
            /// </summary>  
            /// <param name="x"></param>  
            /// <param name="y"></param>  
            /// <param name="value"></param>  
            public void SetCellValue(int x, int y, object value)  
            {  
                if (!this.CheckSheet()) return;  
                this._ws.Cells[x, y] = value;  
            }  
     
            /// <summary>  
            /// 合并单元格  
            /// </summary>  
            /// <param name="x1"></param>  
            /// <param name="y1"></param>  
            /// <param name="x2"></param>  
            /// <param name="y2"></param>  
            public void UniteCells(int x1, int y1, int x2, int y2)  
            {  
                if (!this.CheckSheet()) return;  
                this._ws.get_Range(this._ws.Cells[x1, y1], this._ws.Cells[x2, y2]).Merge(Type.Missing);  
            }  
     
            /// <summary>  
            /// 将内存中数据表格插入到Excel指定工作表的指定位置 为在使用模板时控制格式时使用一  
            /// </summary>  
            /// <param name="dt"></param>  
            /// <param name="startX"></param>  
            /// <param name="startY"></param>  
            public void InsertTable(System.Data.DataTable dt, int startX, int startY)  
            {  
                if (!this.CheckSheet()) return;  
     
                for (int i = 0; i <= dt.Rows.Count - 1; i++)  
                {  
                    for (int j = 0; j <= dt.Columns.Count - 1; j++)  
                    {  
                        this._ws.Cells[startX + i, j + startY] = dt.Rows[i][j].ToString();  
     
                    }  
     
                }  
     
            }  
     
            /// <summary>  
            /// 获取单元格值  
            /// </summary>  
            /// <param name="cellName"></param>  
            /// <returns></returns>  
            public object GetCellValue(string cellName)  
            {  
                if (!this.CheckSheet()) return null;  
     
                Range range = this._ws.get_Range(cellName, Type.Missing);  
     
                return range.Value2;  
            }  
     
            /// <summary>  
            /// 获取单元格值  
            /// </summary>  
            /// <param name="row"></param>  
            /// <param name="col"></param>  
            /// <returns></returns>  
            public object GetCellValue(int row, int col)  
            {  
                if (!this.CheckSheet()) return null;  
     
                Range range = (Range)this._ws.Cells[row, col];  
     
                return range.Value2;  
            }  
     
            public string GetStringValue(string cellName)  
            {  
                object val = this.GetCellValue(cellName);  
                string result = "";  
     
                if (val != null) result = val.ToString();  
     
                return result;  
            }  
     
            public string GetStringValue(int row, int col)  
            {  
                object val = this.GetCellValue(row, col);  
                string result = "";  
     
                if (val != null) result = val.ToString();  
     
                return result;  
            }  
     
            public double GetDoubleValue(string cellName)  
            {  
                object val = this.GetCellValue(cellName);  
                string result = "";  
     
                if (val != null) result = val.ToString();  
     
                double number = 0d;  
                if (double.TryParse(result, out number))  
                {  
                    number = double.Parse(result);  
                }  
                else  
                {  
                    number = 0d;  
                }  
     
                return number;  
            }  
     
            public double GetDoubleValue(int row, int col)  
            {  
                object val = this.GetCellValue(row, col);  
                string result = "";  
     
                if (val != null) result = val.ToString();  
     
                double number = 0d;  
                if (double.TryParse(result, out number))  
                {  
                    number = double.Parse(result);  
                }  
                else  
                {  
                    number = 0d;  
                }  
     
                return number;  
            }  
             
            #endregion  
        }  

  • 相关阅读:
    装饰复杂函数
    装饰器01
    闭包
    函数的嵌套定义
    名称空间
    函数的嵌套调用
    函数的对象
    形参
    实参
    形参与实参
  • 原文地址:https://www.cnblogs.com/leibg/p/2039208.html
Copyright © 2011-2022 走看看