zoukankan      html  css  js  c++  java
  • 一个C#操作Excel类,功能比较全

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using Microsoft.Office.Interop;
    using Microsoft.Office.Core;


    namespace Microsoft.Office.Interop.ExcelEdit
    {
    /// <SUMMARY>
    /// Microsoft.Office.Interop.ExcelEdit 的摘要说明
    /// </SUMMARY>
    public class ExcelEdit
    {
    public string mFilename;
    public Microsoft.Office.Interop.Excel.Application app;
    public Microsoft.Office.Interop.Excel.Workbooks wbs;
    public Microsoft.Office.Interop.Excel.Workbook wb;
    public Microsoft.Office.Interop.Excel.Worksheets wss;
    public Microsoft.Office.Interop.Excel.Worksheet ws;
    public ExcelEdit()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    }
    public void Create()//创建一个Microsoft.Office.Interop.Excel对象
    {
    app = new Microsoft.Office.Interop.Excel.Application();
    wbs = app.Workbooks;
    wb = wbs.Add(true);
    }
    public void Open(string FileName)//打开一个Microsoft.Office.Interop.Excel文件
    {
    app = new Microsoft.Office.Interop.Excel.Application();
    wbs = app.Workbooks;
    wb = wbs.Add(FileName);
    //wb = wbs.Open(FileName, 0, true, 5,"", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "t", false, false, 0, true,Type.Missing,Type.Missing);
    //wb = wbs.Open(FileName,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Microsoft.Office.Interop.Excel.XlPlatform.xlWindows,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);
    mFilename = FileName;
    }
    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 Microsoft.Office.Interop.Excel.Worksheet AddSheet(string SheetName)
    //添加一个工作表
    {
    Microsoft.Office.Interop.Excel.Worksheet s = (Microsoft.Office.Interop.Excel.Worksheet)wb.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
    s.Name = SheetName;
    return s;
    }

    public void DelSheet(string SheetName)//删除一个工作表
    {
    ((Microsoft.Office.Interop.Excel.Worksheet)wb.Worksheets[SheetName]).Delete();
    }
    public Microsoft.Office.Interop.Excel.Worksheet ReNameSheet(string OldSheetName, string NewSheetName)//重命名一个工作表一
    {
    Microsoft.Office.Interop.Excel.Worksheet s = (Microsoft.Office.Interop.Excel.Worksheet)wb.Worksheets[OldSheetName];
    s.Name = NewSheetName;
    return s;
    }

    public Microsoft.Office.Interop.Excel.Worksheet ReNameSheet(Microsoft.Office.Interop.Excel.Worksheet Sheet, string NewSheetName)//重命名一个工作表二
    {

    Sheet.Name = NewSheetName;

    return Sheet;
    }

    public void SetCellValue(Microsoft.Office.Interop.Excel.Worksheet ws, int x, int y, object value)
    //ws:要设值的工作表 X行Y列 value 值
    {
    ws.Cells[x, y] = value;
    }
    public void SetCellValue(string ws, int x, int y, object value)
    //ws:要设值的工作表的名称 X行Y列 value 值
    {

    GetSheet(ws).Cells[x, y] = value;
    }

    public void SetCellProperty(Microsoft.Office.Interop.Excel.Worksheet ws, int Startx, int Starty, int Endx, int Endy, int size, string name, Microsoft.Office.Interop.Excel.Constants color, Microsoft.Office.Interop.Excel.Constants HorizontalAlignment)
    //设置一个单元格的属性 字体, 大小,颜色 ,对齐方式
    {
    name = "宋体";
    size = 12;
    color = Microsoft.Office.Interop.Excel.Constants.xlAutomatic;
    HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlRight;
    ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).Font.Name = name;
    ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).Font.Size = size;
    ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).Font.Color = color;
    ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).HorizontalAlignment = HorizontalAlignment;
    }

    public void SetCellProperty(string wsn, int Startx, int Starty, int Endx, int Endy, int size, string name, Microsoft.Office.Interop.Excel.Constants color, Microsoft.Office.Interop.Excel.Constants HorizontalAlignment)
    {
    //name = "宋体";
    //size = 12;
    //color = Microsoft.Office.Interop.Excel.Constants.xlAutomatic;
    //HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlRight;

    Microsoft.Office.Interop.Excel.Worksheet ws = GetSheet(wsn);
    ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).Font.Name = name;
    ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).Font.Size = size;
    ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).Font.Color = color;

    ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).HorizontalAlignment = HorizontalAlignment;
    }


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

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

    }


    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];

    }

    }

    }


    public void AddTable(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[i + startX, j + startY] = dt.Rows[i][j];

    }

    }

    }
    public void AddTable(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[i + startX, j + startY] = dt.Rows[i][j];

    }
    }

    }
    public void InsertPictures(string Filename, string ws)
    //插入图片操作一
    {
    GetSheet(ws).Shapes.AddPicture(Filename, MsoTriState.msoFalse, MsoTriState.msoTrue, 10, 10, 150, 150);
    //后面的数字表示位置
    }

    //public void InsertPictures(string Filename, string ws, int Height, int Width)
    //插入图片操作二
    //{
    // GetSheet(ws).Shapes.AddPicture(Filename, MsoTriState.msoFalse, MsoTriState.msoTrue, 10, 10, 150, 150);
    // GetSheet(ws).Shapes.get_Range(Type.Missing).Height = Height;
    // GetSheet(ws).Shapes.get_Range(Type.Missing).Width = Width;
    //}
    //public void InsertPictures(string Filename, string ws, int left, int top, int Height, int Width)
    //插入图片操作三
    //{

    // GetSheet(ws).Shapes.AddPicture(Filename, MsoTriState.msoFalse, MsoTriState.msoTrue, 10, 10, 150, 150);
    // GetSheet(ws).Shapes.get_Range(Type.Missing).IncrementLeft(left);
    // GetSheet(ws).Shapes.get_Range(Type.Missing).IncrementTop(top);
    // GetSheet(ws).Shapes.get_Range(Type.Missing).Height = Height;
    // GetSheet(ws).Shapes.get_Range(Type.Missing).Width = Width;
    //}

    public void InsertActiveChart(Microsoft.Office.Interop.Excel.XlChartType ChartType, string ws, int DataSourcesX1, int DataSourcesY1, int DataSourcesX2, int DataSourcesY2, Microsoft.Office.Interop.Excel.XlRowCol ChartDataType)
    //插入图表操作
    {
    ChartDataType = Microsoft.Office.Interop.Excel.XlRowCol.xlColumns;
    wb.Charts.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
    {
    wb.ActiveChart.ChartType = ChartType;
    wb.ActiveChart.SetSourceData(GetSheet(ws).get_Range(GetSheet(ws).Cells[DataSourcesX1, DataSourcesY1], GetSheet(ws).Cells[DataSourcesX2, DataSourcesY2]), ChartDataType);
    wb.ActiveChart.Location(Microsoft.Office.Interop.Excel.XlChartLocation.xlLocationAsObject, ws);
    }
    }
    public bool Save()
    //保存文档
    {
    if (mFilename == "")
    {
    return false;
    }
    else
    {
    try
    {
    wb.Save();
    return true;
    }

    catch (Exception ex)
    {
    return false;
    }
    }
    }
    public bool SaveAs(object FileName)
    //文档另存为
    {
    try
    {
    wb.SaveAs(FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.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对象,销毁对象
    {
    //wb.Save();
    wb.Close(Type.Missing, Type.Missing, Type.Missing);
    wbs.Close();
    app.Quit();
    wb = null;
    wbs = null;
    app = null;
    GC.Collect();
    }
    }
    }

  • 相关阅读:
    .NET、C#和ASP.NET,ASP.NET MVC 四者之间的区别
    Row_Number()显示行号
    iframe高度宽度自适应(转)
    Windows CMD命令大全(转)
    wndows系统命令总结
    删除ORACLE目录OCI.dll文件无法删除 (转)
    IE8兼容性调试及IE 8 css hack
    backbone学习笔记:视图(View)
    js中toFixed() 的使用(转)
    backbone学习笔记:集合(Collection)
  • 原文地址:https://www.cnblogs.com/yuyexiaoxiao/p/11892779.html
Copyright © 2011-2022 走看看