• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    asp.net导出Excel类库代码分享

    复制代码 代码如下:

    using System;
    using System.Collections.Generic;
    using System.Reflection;
    using System.Web;
    using Excel = Microsoft.Office.Interop.Excel;

    /// summary>
    ///ExcelClass 的摘要说明
    /// /summary>
    public class ExcelClass
    {
        /// summary>
        /// 构建ExcelClass类
        /// /summary>
        public ExcelClass()
        {
            this.m_objExcel = new Excel.Application();
        }
        /// summary>
        /// 构建ExcelClass类
        /// /summary>
        /// param name="objExcel">Excel.Application/param>
        public ExcelClass(Excel.Application objExcel)
        {
            this.m_objExcel = objExcel;
        }

        /// summary>
        /// 列标号
        /// /summary>
        private string AList = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

        /// summary>
        /// 获取描述区域的字符
        /// /summary>
        /// param name="x">/param>
        /// param name="y">/param>
        /// returns>/returns>
        public string GetAix(int x, int y)
        {
            char[] AChars = AList.ToCharArray();
            if (x >= 26) { return ""; }
            string s = "";
            s = s + AChars[x - 1].ToString();
            s = s + y.ToString();
            return s;
        }

        /// summary>
        /// 给单元格赋值1
        /// /summary>
        /// param name="x">行号/param>
        /// param name="y">列号/param>
        /// param name="align">对齐(CENTER、LEFT、RIGHT)/param>
        /// param name="text">值/param>
        public void setValue(int y, int x, string align, string text)
        {
            Excel.Range range = sheet.get_Range(this.GetAix(x, y), miss);
            range.set_Value(miss, text);
            if (align.ToUpper() == "CENTER")
            {
                range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
            }
            if (align.ToUpper() == "LEFT")
            {
                range.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
            }
            if (align.ToUpper() == "RIGHT")
            {
                range.HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;
            }


        }

        /// summary>
        /// 给单元格赋值2
        /// /summary>
        /// param name="x">行号/param>
        /// param name="y">列号/param>
        /// param name="text">值/param>
        public void setValue(int y, int x, string text)
        {
            Excel.Range range = sheet.get_Range(this.GetAix(x, y), miss);
            range.set_Value(miss, text);
        }

        /// summary>
        /// 给单元格赋值3
        /// /summary>
        /// param name="x">行号/param>
        /// param name="y">列号/param>
        /// param name="text">值/param>
        /// param name="font">字符格式/param>
        /// param name="color">颜色/param>
        public void setValue(int y, int x, string text, System.Drawing.Font font, System.Drawing.Color color)
        {
            this.setValue(x, y, text);
            Excel.Range range = sheet.get_Range(this.GetAix(x, y), miss);
            range.Font.Size = font.Size;
            range.Font.Bold = font.Bold;
            range.Font.Color = color;
            range.Font.Name = font.Name;
            range.Font.Italic = font.Italic;
            range.Font.Underline = font.Underline;
        }

        /// summary>
        /// 插入新行
        /// /summary>
        /// param name="y">模板行号/param>
        public void insertRow(int y)
        {
            Excel.Range range = sheet.get_Range(GetAix(1, y), GetAix(25, y));
            range.Copy(miss);
            range.Insert(Excel.XlDirection.xlDown, miss);
            range.get_Range(GetAix(1, y), GetAix(25, y));
            range.Select();
            sheet.Paste(miss, miss);


        }

        /// summary>
        /// 把剪切内容粘贴到当前区域
        /// /summary>
        public void past()
        {
            string s = "a,b,c,d,e,f,g";
            sheet.Paste(sheet.get_Range(this.GetAix(10, 10), miss), s);
        }
        /// summary>
        /// 设置边框
        /// /summary>
        /// param name="x1">/param>
        /// param name="y1">/param>
        /// param name="x2">/param>
        /// param name="y2">/param>
        /// param name="Width">/param>
        public void setBorder(int x1, int y1, int x2, int y2, int Width)
        {
            Excel.Range range = sheet.get_Range(this.GetAix(x1, y1), miss);


            ((Excel.Range)range.Cells[x1, y1]).ColumnWidth = Width;
        }
        public void mergeCell(int x1, int y1, int x2, int y2)
        {
            Excel.Range range = sheet.get_Range(this.GetAix(x1, y1), this.GetAix(x2, y2));
            range.Merge(true);
        }

        public Excel.Range getRange(int x1, int y1, int x2, int y2)
        {
            Excel.Range range = sheet.get_Range(this.GetAix(x1, y1), this.GetAix(x2, y2));
            return range;
        }

        private object miss = Missing.Value; //忽略的参数OLENULL
        private Excel.Application m_objExcel;//Excel应用程序实例
        private Excel.Workbooks m_objBooks;//工作表集合
        private Excel.Workbook m_objBook;//当前操作的工作表
        private Excel.Worksheet sheet;//当前操作的表格

        public Excel.Worksheet CurrentSheet
        {
            get
            {
                return sheet;
            }
            set
            {
                this.sheet = value;
            }
        }

        public Excel.Workbooks CurrentWorkBooks
        {
            get
            {
                return this.m_objBooks;
            }
            set
            {
                this.m_objBooks = value;
            }
        }

        public Excel.Workbook CurrentWorkBook
        {
            get
            {
                return this.m_objBook;
            }
            set
            {
                this.m_objBook = value;
            }
        }
        /// summary>
        /// 打开Excel文件
        /// /summary>
        /// param name="filename">路径/param>
        public void OpenExcelFile(string filename)
        {
            UserControl(false);

            m_objExcel.Workbooks.Open(filename, miss, miss, miss, miss, miss, miss, miss,
                                   miss, miss, miss, miss, miss, miss, miss);

            m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;

            m_objBook = m_objExcel.ActiveWorkbook;
            sheet = (Excel.Worksheet)m_objBook.ActiveSheet;
        }
        public void UserControl(bool usercontrol)
        {
            if (m_objExcel == null) { return; }
            m_objExcel.UserControl = usercontrol;
            m_objExcel.DisplayAlerts = usercontrol;
            m_objExcel.Visible = usercontrol;
        }
        public void CreateExceFile()
        {
            UserControl(false);
            m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
            m_objBook = (Excel.Workbook)(m_objBooks.Add(miss));
            sheet = (Excel.Worksheet)m_objBook.ActiveSheet;
        }
        public void SaveAs(string FileName)
        {
             m_objBook.SaveAs(FileName, miss, miss, miss, miss,
             miss, Excel.XlSaveAsAccessMode.xlNoChange,
             Excel.XlSaveConflictResolution.xlLocalSessionChanges,
             miss, miss, miss, miss);
            //m_objBook.Close(false, miss, miss);
        }
        public void ReleaseExcel()
        {
            m_objExcel.Quit();
            System.Runtime.InteropServices.Marshal.ReleaseComObject((object)m_objExcel);
            System.Runtime.InteropServices.Marshal.ReleaseComObject((object)m_objBooks);
            System.Runtime.InteropServices.Marshal.ReleaseComObject((object)m_objBook);
            System.Runtime.InteropServices.Marshal.ReleaseComObject((object)sheet);
            m_objExcel = null;
            m_objBooks = null;
            m_objBook = null;
            sheet = null;
            GC.Collect();
        }

        public bool KillAllExcelApp()
        {
            try
            {
                if (m_objExcel != null) // isRunning是判断xlApp是怎么启动的flag.
                {
                    m_objExcel.Quit();
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcel);
                    //释放COM组件,其实就是将其引用计数减1
                    //System.Diagnostics.Process theProc;
                    foreach (System.Diagnostics.Process theProc in System.Diagnostics.Process.GetProcessesByName("EXCEL"))
                    {
                        //先关闭图形窗口。如果关闭失败...有的时候在状态里看不到图形窗口的excel了,
                        //但是在进程里仍然有EXCEL.EXE的进程存在,那么就需要杀掉它:p
                        if (theProc.CloseMainWindow() == false)
                        {
                            theProc.Kill();
                        }
                    }
                    m_objExcel = null;
                    return true;
                }
            }
            catch
            {
                return false;
            }
            return true;
        }
    }

       /// summary>
        /// 点击打印按钮事件
        /// /summary>
        /// param name="sender">/param>
        /// param name="e">/param>
        protected void Sendbu_Click(object sender, EventArgs e)
        {
            try
            {         
                //查找部门分类用户
                DataTable Duser = EduOA.DBUtility.DbHelperSQL.Query("select count(*) as count,d.Id as DId FROM OA_User u,OA_Department d where u.DepartmentID=d.Id  group by d.Id").Tables[0];

                ExcelClass Ec = new ExcelClass();//创建Excel操作类对象

                int Ycount = 1;

                Ec.CreateExceFile();//创建Excel文件

                Ec.setValue(Ycount, 1, "CENTER", "组织部门");
                Ec.setValue(Ycount, 2, "CENTER", "姓名");
                Ec.setValue(Ycount, 3, "CENTER", "性别");
                Ec.setValue(Ycount, 4, "CENTER", "职位");
                Ec.setValue(Ycount, 5, "CENTER", "移动电话");
                Ec.setValue(Ycount, 6, "CENTER", "电话");
                Ec.setValue(Ycount, 7, "CENTER", "电子邮箱");
                Ec.setBorder(1, 1, 1, 1, 50);
                Ec.setBorder(1, 2, 2, 2, 20);
                Ec.setBorder(1, 5, 5, 5, 20);
                Ec.setBorder(1, 6, 6, 6, 20);
                Ec.setBorder(1, 7, 7, 7, 20);

                for (int i = 0; i Duser.Rows.Count; i++)
                {
                    Ycount += 1;
                    Ec.setValue(Ycount, 1, "CENTER", Common.DeleteHtml(Getdept(Duser.Rows[i]["count"], Duser.Rows[i]["DId"])));
                    DataTable dtuser = GetData(Duser.Rows[i]["DId"]);
                    for (int k = 0; k dtuser.Rows.Count; k++)
                    {
                        Ec.setValue(Ycount, 2, "CENTER", dtuser.Rows[k]["TrueName"].ToString());
                        Ec.setValue(Ycount, 3, "CENTER", dtuser.Rows[k]["sex"].ToString());
                        Ec.setValue(Ycount, 4, "CENTER", dtuser.Rows[k]["PositionId"].ToString());
                        Ec.setValue(Ycount, 5, "CENTER", dtuser.Rows[k]["Telephone"].ToString());
                        Ec.setValue(Ycount, 6, "CENTER", dtuser.Rows[k]["Mobile"].ToString());
                        Ec.setValue(Ycount, 7, "CENTER", dtuser.Rows[k]["Email"].ToString());
                        Ycount += 1;
                    }
                }
                string path = Server.MapPath("Contactfiles\\");
                Ec.SaveAs(path+"通讯录.xlsx");

                //*******释放Excel资源***********
                Ec.ReleaseExcel();

                Response.Redirect("Contactfiles/通讯录.xlsx");           
            }
            catch (Exception ex)
            {
                PageError("导出出错!"+ex.ToString(),"");
            }
        }

    您可能感兴趣的文章:
    • Asp.Net类库中发送电子邮件的代码
    • asp.net 类库中使用ConfigurationManager.ConnectionStrings
    • js插件类库组织与管理(基于asp.net管理)
    • asp.net类库中添加WebService引用出现问题解决方法
    • ASP.NET MVC 控制器与视图
    • ASP.NET中MVC从后台控制器传递数据到前台视图的方式
    • ASP.NET MVC中将控制器分离到类库的实现
    上一篇:ASP.NET中的DataGridView绑定数据和选中行删除功能具体实例
    下一篇:asp.net中eval不能定义变量的问题的解决方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    asp.net导出Excel类库代码分享 asp.net,导出,Excel,类库,代码,