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{    

////// Microsoft.Office.Interop.ExcelEdit 的摘要说明

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();       

 }    

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • C#操作excel(多种方法比较) 我们在做excel资料的时候,通常有以下方法。 一.导入导出excel常用方法...
    北风知我意阅读 1,517评论 0 2
  • 原文来自:http://www.cnblogs.com/zhangqifeng/archive/2009/06/1...
    简单Liml阅读 1,231评论 0 0
  • 1.1 VBA是什么 直到90年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得...
    浮浮尘尘阅读 21,982评论 6 49
  • 本例为设置密码窗口 (1) If Application.InputBox(“请输入密码:”) = 1234 Th...
    浮浮尘尘阅读 13,834评论 1 20
  • 个人简介 王士生,字涵石,1947年出生于西安,天津市武清区籍贯。 现为:国家一级美术师,中国华夏...
    艺术范阅读 2,538评论 0 0