ASP.NET中Excel操作类

转载 2012年04月22日 22:35:24
  1. using System;  
  2. using System.Data;  
  3. using System.Configuration;  
  4. using System.Web;  
  5. using System.Web.Security;  
  6. using System.Web.UI;  
  7. using System.Web.UI.WebControls;  
  8. using System.Web.UI.WebControls.WebParts;  
  9. using System.Web.UI.HtmlControls;  
  10. using Microsoft.Office.Interop;  
  11. using Microsoft.Office.Core;  
  12. namespace ExcelEdit  
  13. {  
  14.     ///   <summary >    
  15.     ///   ExcelEdit   的摘要说明    
  16.     ///   </summary >    
  17.     public class ExcelEdit  
  18.     {  
  19.         public string mFilename;  
  20.         public Excel.Application app;  
  21.         public Excel.Workbooks wbs;  
  22.         public Excel.Workbook wb;  
  23.         public Excel.Worksheets wss;  
  24.         public Excel.Worksheet ws;  
  25.         public ExcelEdit()  
  26.         {  
  27.             //    
  28.             //   TODO:   在此处添加构造函数逻辑    
  29.             //    
  30.         }  
  31.         public void Create()//创建一个Excel对象    
  32.         {  
  33.             app = new Excel.Application();  
  34.             wbs = app.Workbooks;  
  35.             wb = wbs.Add(true);  
  36.         }  
  37.         public void Open(string FileName)//打开一个Excel文件    
  38.         {  
  39.             app = new Excel.Application();  
  40.             wbs = app.Workbooks;  
  41.             wb = wbs.Add(FileName);  
  42.             //wb   =   wbs.Open(FileName,     0,   true,   5, " ",   " ",   true,   Excel.XlPlatform.xlWindows,   "/t ",   false,   false,   0,   true,Type.Missing,Type.Missing);    
  43.             //wb   =   wbs.Open(FileName,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Excel.XlPlatform.xlWindows,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);    
  44.             mFilename = FileName;  
  45.         }  
  46.         public Excel.Worksheet GetSheet(string SheetName)//获取一个工作表    
  47.         {  
  48.             Excel.Worksheet s = (Excel.Worksheet)wb.Worksheets[SheetName];  
  49.             return s;  
  50.         }  
  51.         public Excel.Worksheet AddSheet(string SheetName)//添加一个工作表    
  52.         {  
  53.             Excel.Worksheet s = (Excel.Worksheet)wb.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);  
  54.             s.Name = SheetName;  
  55.             return s;  
  56.         }  
  57.         public void DelSheet(string SheetName)//删除一个工作表    
  58.         {  
  59.             ((Excel.Worksheet)wb.Worksheets[SheetName]).Delete();  
  60.         }  
  61.         public Excel.Worksheet ReNameSheet(string OldSheetName, string NewSheetName)//重命名一个工作表一    
  62.         {  
  63.             Excel.Worksheet s = (Excel.Worksheet)wb.Worksheets[OldSheetName];  
  64.             s.Name = NewSheetName;  
  65.             return s;  
  66.         }  
  67.         public Excel.Worksheet ReNameSheet(Excel.Worksheet Sheet, string NewSheetName)//重命名一个工作表二    
  68.         {  
  69.             Sheet.Name = NewSheetName;  
  70.             return Sheet;  
  71.         }  
  72.         public void SetCellValue(Excel.Worksheet ws, int x, int y, object value)//ws:要设值的工作表           X行Y列           value       值      
  73.         {  
  74.             ws.Cells[x, y] = value;  
  75.         }  
  76.         public void SetCellValue(string ws, int x, int y, object value)//ws:要设值的工作表的名称   X行Y列   value   值    
  77.         {  
  78.             GetSheet(ws).Cells[x, y] = value;  
  79.         }  
  80.         public void SetCellProperty(Excel.Worksheet ws, int Startx, int Starty, int Endx, int Endy, int size, string name, Excel.Constants color, Excel.Constants HorizontalAlignment)//设置一个单元格的属性       字体,       大小,颜色       ,对齐方式    
  81.         {  
  82.             name = "宋体 ";  
  83.             size = 12;  
  84.             color = Excel.Constants.xlAutomatic;  
  85.             HorizontalAlignment = Excel.Constants.xlRight;  
  86.             ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).Font.Name = name;  
  87.             ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).Font.Size = size;  
  88.             ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).Font.Color = color;  
  89.             ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).HorizontalAlignment = HorizontalAlignment;  
  90.         }  
  91.         public void SetCellProperty(string wsn, int Startx, int Starty, int Endx, int Endy, int size, string name, Excel.Constants color, Excel.Constants HorizontalAlignment)  
  92.         {  
  93.             //name   =   "宋体 ";    
  94.             //size   =   12;    
  95.             //color   =   Excel.Constants.xlAutomatic;    
  96.             //HorizontalAlignment   =   Excel.Constants.xlRight;    
  97.             Excel.Worksheet ws = GetSheet(wsn);  
  98.             ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).Font.Name = name;  
  99.             ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).Font.Size = size;  
  100.             ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).Font.Color = color;  
  101.             ws.get_Range(ws.Cells[Startx, Starty], ws.Cells[Endx, Endy]).HorizontalAlignment = HorizontalAlignment;  
  102.         }  
  103.         public void UniteCells(Excel.Worksheet ws, int x1, int y1, int x2, int y2)//合并单元格    
  104.         {  
  105.             ws.get_Range(ws.Cells[x1, y1], ws.Cells[x2, y2]).Merge(Type.Missing);  
  106.         }  
  107.         public void UniteCells(string ws, int x1, int y1, int x2, int y2)//合并单元格    
  108.         {  
  109.             GetSheet(ws).get_Range(GetSheet(ws).Cells[x1, y1], GetSheet(ws).Cells[x2, y2]).Merge(Type.Missing);  
  110.         }  
  111.         public void InsertTable(System.Data.DataTable dt, string ws, int startX, int startY)//将内存中数据表格插入到Excel指定工作表的指定位置   为在使用模板时控制格式时使用一    
  112.         {  
  113.             for (int i = 0; i <= dt.Rows.Count - 1; i++)  
  114.             {  
  115.                 for (int j = 0; j <= dt.Columns.Count - 1; j++)  
  116.                 {  
  117.                     GetSheet(ws).Cells[startX + i, j + startY] = dt.Rows[i][j].ToString();  
  118.                 }  
  119.             }  
  120.         }  
  121.         public void InsertTable(System.Data.DataTable dt, Excel.Worksheet ws, int startX, int startY)//将内存中数据表格插入到Excel指定工作表的指定位置二    
  122.         {  
  123.             for (int i = 0; i <= dt.Rows.Count - 1; i++)  
  124.             {  
  125.                 for (int j = 0; j <= dt.Columns.Count - 1; j++)  
  126.                 {  
  127.                     ws.Cells[startX + i, j + startY] = dt.Rows[i][j];  
  128.                 }  
  129.             }  
  130.         }  
  131.         public void AddTable(System.Data.DataTable dt, string ws, int startX, int startY)//将内存中数据表格添加到Excel指定工作表的指定位置一    
  132.         {  
  133.             for (int i = 0; i <= dt.Rows.Count - 1; i++)  
  134.             {  
  135.                 for (int j = 0; j <= dt.Columns.Count - 1; j++)  
  136.                 {  
  137.                     GetSheet(ws).Cells[i + startX, j + startY] = dt.Rows[i][j];  
  138.                 }  
  139.             }  
  140.         }  
  141.         public void AddTable(System.Data.DataTable dt, Excel.Worksheet ws, int startX, int startY)//将内存中数据表格添加到Excel指定工作表的指定位置二    
  142.         {  
  143.             for (int i = 0; i <= dt.Rows.Count - 1; i++)  
  144.             {  
  145.                 for (int j = 0; j <= dt.Columns.Count - 1; j++)  
  146.                 {  
  147.                     ws.Cells[i + startX, j + startY] = dt.Rows[i][j];  
  148.                 }  
  149.             }  
  150.         }  
  151.         public void InsertPictures(string Filename, string ws)//插入图片操作一    
  152.         {  
  153.             GetSheet(ws).Shapes.AddPicture(Filename, MsoTriState.msoFalse, MsoTriState.msoTrue, 10, 10, 150, 150);//后面的数字表示位置    
  154.         }  
  155.         //public   void   InsertPictures(string   Filename,   string   ws,   int   Height,   int   Width)//插入图片操作二    
  156.         //{    
  157.         //         GetSheet(ws).Shapes.AddPicture(Filename,   MsoTriState.msoFalse,   MsoTriState.msoTrue,   10,   10,   150,   150);    
  158.         //         GetSheet(ws).Shapes.get_Range(Type.Missing).Height   =   Height;    
  159.         //         GetSheet(ws).Shapes.get_Range(Type.Missing).Width   =   Width;    
  160.         //}    
  161.         //public   void   InsertPictures(string   Filename,   string   ws,   int   left,   int   top,   int   Height,   int   Width)//插入图片操作三    
  162.         //{    
  163.         //         GetSheet(ws).Shapes.AddPicture(Filename,   MsoTriState.msoFalse,   MsoTriState.msoTrue,   10,   10,   150,   150);    
  164.         //         GetSheet(ws).Shapes.get_Range(Type.Missing).IncrementLeft(left);    
  165.         //         GetSheet(ws).Shapes.get_Range(Type.Missing).IncrementTop(top);    
  166.         //         GetSheet(ws).Shapes.get_Range(Type.Missing).Height   =   Height;    
  167.         //         GetSheet(ws).Shapes.get_Range(Type.Missing).Width   =   Width;    
  168.         //}    
  169.         public void InsertActiveChart(Excel.XlChartType ChartType, string ws, int DataSourcesX1, int DataSourcesY1, int DataSourcesX2, int DataSourcesY2, Excel.XlRowCol ChartDataType)//插入图表操作    
  170.         {  
  171.             ChartDataType = Excel.XlRowCol.xlColumns;  
  172.             wb.Charts.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);  
  173.             {  
  174.                 wb.ActiveChart.ChartType = ChartType;  
  175.                 wb.ActiveChart.SetSourceData(GetSheet(ws).get_Range(GetSheet(ws).Cells[DataSourcesX1, DataSourcesY1], GetSheet(ws).Cells[DataSourcesX2, DataSourcesY2]), ChartDataType);  
  176.                 wb.ActiveChart.Location(Excel.XlChartLocation.xlLocationAsObject, ws);  
  177.             }  
  178.         }  
  179.         public bool Save()//保存文档    
  180.         {  
  181.             if (mFilename == " ")  
  182.             {  
  183.                 return false;  
  184.             }  
  185.             else  
  186.             {  
  187.                 try  
  188.                 {  
  189.                     wb.Save();  
  190.                     return true;  
  191.                 }  
  192.                 catch (Exception ex)  
  193.                 {  
  194.                     return false;  
  195.                 }  
  196.             }  
  197.         }  
  198.         public bool SaveAs(object FileName)//文档另存为    
  199.         {  
  200.             try  
  201.             {  
  202.                 wb.SaveAs(FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);  
  203.                 return true;  
  204.             }  
  205.             catch (Exception ex)  
  206.             {  
  207.                 return false;  
  208.             }  
  209.         }  
  210.         public void Close()//关闭一个Excel对象,销毁对象    
  211.         {  
  212.             //wb.Save();    
  213.             wb.Close(Type.Missing, Type.Missing, Type.Missing);  
  214.             wbs.Close();  
  215.             app.Quit();  
  216.             wb = null;  
  217.             wbs = null;  
  218.             app = null;  
  219.             GC.Collect();  
  220.         }  
  221.     }  
  222. }  

Asp.Net Excel 操作 类

因为工作原因,做了很多次关于Winform操作Excel的项目 今天把操作Excel的类整理了一下,跟大家分享 还有很多操作,大家可以补充或者提意见给我.非常感谢! usin...

asp.net 对 excel文件操作的类

  • 2008年11月14日 12:11
  • 9KB
  • 下载

asp.net(C#)套用模板操作Excel

当需要输出带大量公式的Excel文档的时候,在代码里写公式就太累了。   用设计好的Excel模板,复制一下,往里面添加数据比较省事。   模板 大气象   using Sys...

ASP.NET操作Excel时出现

http://blog.eastmoney.com/fk/blog_120145559.html   问题描述: ASP.NET操作Excel时出现 System.UnauthorizedAc...

NPOI Asp.net操作Excel

原文:NPOI(1):Asp.net操作Excel先去官网:http://npoi.codeplex.com/下载需要引入dll(可以选择.net2.0或者.net4.0的dll),然后在网站中添加引...

Asp.net(C#)操作Excel的问题

     1.使用ADO.NET访问Excel?答:    首先代码如下。           //指定链接的数据源            string source = "F://XXX//XXX/...

Asp.Net操作Excel的几种方法

ASP.NET读取Excel文件方法一:采用OleDB读取Excel文件: 把Excel文件当做一个数据源来进行数据的读取操作,实例如下: public DataSet Excel...

ASP.NET操作EXCEL 合并单元格 大全

公元19XX年前,关于EXCEL的操作就如滔滔江水,连绵不绝,真正操作EXCEL我也是从去年下半年开始的,有些比较复杂的年度报表之类的,做起来也有点费力,不过还是都能画出来了,关于EXCEL的报表导出...

Asp.net/c#+OleDb操作excel文件(二),数据传输使用Parameters

Asp.net/c#+OleDb操作excel文件(二),数据传输使用Parameters
  • dz45693
  • dz45693
  • 2011年01月12日 16:35
  • 2583

asp.net 在IIS下操作Excel文件权限不足的解决方法

一个web程序需要操作Excel文件,在开发环境下程序测试正常,部署到IIS后程序操作Excel文件,IIS报错。IIS提示信息如下:检索 COM 类工厂中 CLSID 为 {00024500-000...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET中Excel操作类
举报原因:
原因补充:

(最多只允许输入30个字)