C#操作Excel

来源:互联网 发布:淘宝产品上架教程视频 编辑:程序博客网 时间:2024/05/01 01:17

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 Microsoft.Office.Core;
using Microsoft.Office.Interop;
using Microsoft.Office.Interop.Excel;

namespace ExcelControl
{
    public class ToExcel
    {
        private Application _app;
        public Application app
        {
            get { return _app; }
            set { _app = value; }
        }

        private Workbooks _wbs;
        public Workbooks wbs
        {
            get { return _wbs; }
            set { _wbs = value; }
        }

        private Workbook _wb;
        public Workbook wb
        {
            get { return _wb; }
            set { _wb = value; }
        }

        private Worksheet _ws;
        public Worksheet ws
        {
            get { return _ws; }
            set { _ws = value; }
        }

        public ToExcel() //构造函数
        {
            Create();
        }

        public void Create()//创建一个Microsoft.Office.Interop.Excel对象
        {
            _app = new Application();
            _wbs = _app.Workbooks;
            _wb = _wbs.Add(true);
            _ws = _wb.Worksheets[1] as Worksheet;
        }

        public bool SaveAs(object FileName)//文档另存为
        {
            try
            {
                _wb.SaveAs(FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                    Type.Missing, XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing,
                    Type.Missing, Type.Missing, Type.Missing);
                return true;

            }
            catch (Exception ex)
            {
                return false;

            }
        }

        public void Close()//关闭一个Microsoft.Office.Interop.Excel对象,销毁对象
        {
            _app.DisplayAlerts = false;
            _app.AlertBeforeOverwriting = false;
            //清空excelSheet対象
            System.Runtime.InteropServices.Marshal.ReleaseComObject(_ws);
            ws = null;
            //清空excelBook対象
            System.Runtime.InteropServices.Marshal.ReleaseComObject(_wb);
            _wb = null;
            //清空excelApp対象
            System.Runtime.InteropServices.Marshal.ReleaseComObject(_app);
            _app = null;
            _wbs.Close();
            //清空excelBooks対象
            System.Runtime.InteropServices.Marshal.ReleaseComObject(_wbs);
            _wbs = null;

            GC.Collect();
        }

        #region 数据表操作
        public Microsoft.Office.Interop.Excel.Worksheet GetSheet(string SheetName)//获取一个工作表
        {
            Microsoft.Office.Interop.Excel.Worksheet s = (Microsoft.Office.Interop.Excel.Worksheet)_wb.Worksheets[SheetName];
            return s;
        }

        public void InsertTable(System.Data.DataTable dt,
            string ws, int startX, int startY)
        //将内存中数据表格插入到Microsoft.Office.Interop.Excel指定工作表的指定位置 为在使用模板时控制格式时使用一
        {
            for (int i = 0; i <= dt.Rows.Count - 1; i++)
            {
                for (int j = 0; j <= dt.Columns.Count - 1; j++)
                {
                    GetSheet(ws).Cells[startX + i, j + startY] = dt.Rows[i][j].ToString();
                }
            }
        }

        public void InsertTable(System.Data.DataTable dt, Microsoft.Office.Interop.Excel.Worksheet ws, int startX, int startY)
        //将内存中数据表格插入到Microsoft.Office.Interop.Excel指定工作表的指定位置二
        {
            for (int i = 0; i <= dt.Rows.Count - 1; i++)
            {
                for (int j = 0; j <= dt.Columns.Count - 1; j++)
                {
                    ws.Cells[startX + i, j + startY] = dt.Rows[i][j];
                }
            }
        }
        #endregion

        #region 设置单元格的值
        public void SetCellValue(int x, int y, object value)//X行Y列 value值
        {
            _ws.Cells[x, y] = value;
        }
        #endregion

        #region 设置单元格格式

        public void UniteCells(int x1, int y1, int x2, int y2) //合并单元格
        {
            _ws.get_Range(_ws.Cells[x1, y1], _ws.Cells[x2, y2]).Merge(Type.Missing);
        }

        public void SetCellAlignment(int Startx, int Starty, //单元格对齐方式1
            int Endx, int Endy, Constants HorizontalAlignment)
        {
            _ws.get_Range(_ws.Cells[Startx, Starty], _ws.Cells[Endx, Endy]).HorizontalAlignment = HorizontalAlignment;
        }

        public void SetCellAlignment(int x, int y, //单元格对齐方式2
            Constants HorizontalAlignment)
        {
            SetCellAlignment(x, y, x, y, HorizontalAlignment);
        }

        public void SetCellFont(int Startx, int Starty, //字体1
            int Endx, int Endy, int fontSize, bool isBold)
        {
            _ws.get_Range(_ws.Cells[Startx, Starty], _ws.Cells[Endx, Endy]).Font.Size = fontSize;
            _ws.get_Range(_ws.Cells[Startx, Starty], _ws.Cells[Endx, Endy]).Font.Bold = isBold;
        }

        public void SetCellFont(int x, int y, int fontSize, bool isBold) //字体2
        {
            SetCellFont(x, y, x, y, fontSize, isBold);
        }

        public void SetCellBorder(int Startx, int Starty, int Endx, int Endy) //边框
        {
            Range excelRange =
                _ws.get_Range(_ws.Cells[Startx, Starty], _ws.Cells[Endx, Endy]);

            excelRange.Borders.LineStyle = 1;
        }

        public void SetCellSize(int Startx, int Starty, int Endx, int Endy, int height) //行高、列宽
        {
            Range excelRange =
                _ws.get_Range(_ws.Cells[Startx, Starty], _ws.Cells[Endx, Endy]);
           
            excelRange.EntireColumn.AutoFit(); //自动调整列宽
            excelRange.RowHeight = height;
        }

        #endregion
    }
}

原创粉丝点击