'引入Excel的COM组件

Imports System
Imports System.Data
Imports System.Configuration
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.HtmlControls
Imports Microsoft.Office.Interop
Imports Microsoft.Office.Core

Namespace ExcelEdit
''' <summary>
''' ExcelEdit 的摘要说明
''' </summary>
Public Class ExcelEdit
   Public mFilename As String
   Public app As Excel.Application
   Public wbs As Excel.Workbooks
   Public wb As Excel.Workbook
   Public wss As Excel.Worksheets
   Public ws As Excel.Worksheet
     '
     ' TODO: 在此处添加构造函数逻辑
     '
   Public Sub New()
   End Sub
   Public Sub Create()
   '创建一个Excel对象
    app = New Excel.Application()
    wbs = app.Workbooks
    wb = wbs.Add(True)
   End Sub
   Public Sub Open(ByVal FileName As String)
   '打开一个Excel文件
    app = New Excel.Application()
    wbs = app.Workbooks
    wb = wbs.Add(FileName)
    'wb = wbs.Open(FileName, 0, true, 5,"", "", true,
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,Excel.XlPlatform.xlWindows,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);
    mFilename = FileName
   End Sub
   Public Function GetSheet(ByVal SheetName As String) As Excel.Worksheet
   '获取一个工作表
    Dim s As Excel.Worksheet = DirectCast(wb.Worksheets(SheetName), Excel.Worksheet)
    Return s
   End Function
   Public Function AddSheet(ByVal SheetName As String) As Excel.Worksheet
   '添加一个工作表
    Dim s As Excel.Worksheet =
DirectCast(wb.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing,
Type.Missing), Excel.Worksheet)
    s.Name = SheetName
    Return s
   End Function

Public Sub DelSheet(ByVal SheetName As String)
   '删除一个工作表
    DirectCast(wb.Worksheets(SheetName), Excel.Worksheet).Delete()
   End Sub
   Public Function ReNameSheet(ByVal OldSheetName As String, ByVal NewSheetName As String) As Excel.Worksheet
   '重命名一个工作表一
    Dim s As Excel.Worksheet = DirectCast(wb.Worksheets(OldSheetName), Excel.Worksheet)
    s.Name = NewSheetName
    Return s
   End Function

Public Function ReNameSheet(ByVal Sheet As Excel.Worksheet, ByVal NewSheetName As String) As Excel.Worksheet
   '重命名一个工作表二

Sheet.Name = NewSheetName

Return Sheet
   End Function

Public Sub SetCellValue(ByVal ws As Excel.Worksheet, ByVal x As Integer, ByVal y As Integer, ByVal value As Object)
   'ws:要设值的工作表     X行Y列     value   值
    ws.Cells(x, y) = value
   End Sub
   Public Sub SetCellValue(ByVal ws As String, ByVal x As Integer, ByVal y As Integer, ByVal value As Object)
   'ws:要设值的工作表的名称 X行Y列 value 值

GetSheet(ws).Cells(x, y) = value
   End Sub

Public Sub SetCellProperty(ByVal ws As Excel.Worksheet, ByVal
Startx As Integer, ByVal Starty As Integer, ByVal Endx As Integer, ByVal
Endy As Integer, ByVal size As Integer, _
    ByVal name As String, ByVal color As Excel.Constants, ByVal HorizontalAlignment As Excel.Constants)
   '设置一个单元格的属性   字体,   大小,颜色   ,对齐方式
    name = "宋体"
    size = 12
    color = Excel.Constants.xlAutomatic
    HorizontalAlignment = 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
   End Sub

Public Sub SetCellProperty(ByVal wsn As String, ByVal Startx As
Integer, ByVal Starty As Integer, ByVal Endx As Integer, ByVal Endy As
Integer, ByVal size As Integer, _
    ByVal name As String, ByVal color As Excel.Constants, ByVal HorizontalAlignment As Excel.Constants)
    'name = "宋体";
    'size = 12;
    'color = Excel.Constants.xlAutomatic;
    'HorizontalAlignment = Excel.Constants.xlRight;

Dim ws As Excel.Worksheet = 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
   End Sub

Public Sub UniteCells(ByVal ws As Excel.Worksheet, ByVal x1 As
Integer, ByVal y1 As Integer, ByVal x2 As Integer, ByVal y2 As Integer)
   '合并单元格
    ws.get_Range(ws.Cells(x1, y1), ws.Cells(x2, y2)).Merge(Type.Missing)
   End Sub

Public Sub UniteCells(ByVal ws As String, ByVal x1 As Integer, ByVal y1 As Integer, ByVal x2 As Integer, ByVal y2 As Integer)
   '合并单元格
    GetSheet(ws).get_Range(GetSheet(ws).Cells(x1, y1), GetSheet(ws).Cells(x2, y2)).Merge(Type.Missing)

End Sub

Public Sub InsertTable(ByVal dt As System.Data.DataTable, ByVal ws As
String, ByVal startX As Integer, ByVal startY As Integer)
   '将内存中数据表格插入到Excel指定工作表的指定位置 为在使用模板时控制格式时使用一
    For i As Integer = 0 To dt.Rows.Count - 1

For j As Integer = 0 To dt.Columns.Count - 1

GetSheet(ws).Cells(startX + i, j + startY) = dt.Rows(i)(j).ToString()

Next
    Next

End Sub

Public Sub InsertTable(ByVal dt As System.Data.DataTable, ByVal ws As
Excel.Worksheet, ByVal startX As Integer, ByVal startY As Integer)
   '将内存中数据表格插入到Excel指定工作表的指定位置二
    For i As Integer = 0 To dt.Rows.Count - 1

For j As Integer = 0 To dt.Columns.Count - 1
      ws.Cells(startX + i, j + startY) = dt.Rows(i)(j)

Next
    Next

End Sub

Public Sub AddTable(ByVal dt As System.Data.DataTable, ByVal ws As String, ByVal startX As Integer, ByVal startY As Integer)
   '将内存中数据表格添加到Excel指定工作表的指定位置一
    For i As Integer = 0 To dt.Rows.Count - 1

For j As Integer = 0 To dt.Columns.Count - 1
      GetSheet(ws).Cells(i + startX, j + startY) = dt.Rows(i)(j)

Next
    Next

End Sub

Public Sub AddTable(ByVal dt As System.Data.DataTable, ByVal ws As
Excel.Worksheet, ByVal startX As Integer, ByVal startY As Integer)
   '将内存中数据表格添加到Excel指定工作表的指定位置二
    For i As Integer = 0 To dt.Rows.Count - 1
     For j As Integer = 0 To dt.Columns.Count - 1
      ws.Cells(i + startX, j + startY) = dt.Rows(i)(j)
     Next
    Next

End Sub

Public Sub InsertPictures(ByVal Filename As String, ByVal ws As String)
   '插入图片操作一
    GetSheet(ws).Shapes.AddPicture(Filename, MsoTriState.msoFalse, MsoTriState.msoTrue, 10, 10, 150, _
     150)
    '后面的数字表示位置
   End Sub

'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 Sub InsertActiveChart(ByVal ChartType As Excel.XlChartType, ByVal
ws As String, ByVal DataSourcesX1 As Integer, ByVal DataSourcesY1 As
Integer, ByVal DataSourcesX2 As Integer, ByVal DataSourcesY2 As Integer,
_
    ByVal ChartDataType As Excel.XlRowCol)
   '插入图表操作
    ChartDataType = 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(Excel.XlChartLocation.xlLocationAsObject, ws)
   End Sub
   Public Function Save() As Boolean
   '保存文档
    If mFilename = "" Then
     Return False
    Else
     Try
      wb.Save()
      Return True
     Catch ex As Exception

Return False
     End Try
    End If
   End Function
   Public Function SaveAs(ByVal FileName As Object) As Boolean
   '文档另存为
    Try
     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)

Return True
    Catch ex As Exception
     Return False
    End Try
   End Function
   Public Sub Close()
   '关闭一个Excel对象,销毁对象
    'wb.Save();
    wb.Close(Type.Missing, Type.Missing, Type.Missing)
    wbs.Close()
    app.Quit()
    wb = Nothing
    wbs = Nothing
    app = Nothing
    GC.Collect()
   End Sub
End Class
End Namespace

Excel操作类的更多相关文章

  1. C#EXCEL 操作类--C#ExcelHelper操作类

    主要功能如下1.导出Excel文件,自动返回可下载的文件流 2.导出Excel文件,转换为可读模式3.导出Excel文件,并自定义文件名4.将数据导出至Excel文件5.将指定的集合数据导出至Exce ...

  2. Excel 操作类

    转载:http://www.cnblogs.com/fellowcheng/archive/2010/08/21/1805158.html ExcelHelper(Excel2007) Code hi ...

  3. C#常用工具类——Excel操作类

    /// 常用工具类——Excel操作类 /// <para> ------------------------------------------------</para> / ...

  4. C# Excel操作类

    /// 常用工具类——Excel操作类 /// <para> ------------------------------------------------</para> / ...

  5. C#常用工具类——Excel操作类(ZT)

    本文转载于: http://www.cnblogs.com/zfanlong1314/p/3916047.html /// 常用工具类——Excel操作类 /// <para> ----- ...

  6. C#封装的VSTO Excel操作类

    自己在用的Excel操作类,因为经常在工作中要操作Excel文件,可是使用vba实现起来实在是不方便,而且编写也很困难,拼接一个字符串都看的眼花. 这个时候C#出现了,发现使用C#来操作Excel非常 ...

  7. C#自定义Excel操作类

    C#自定义Excel操作类,可以用于将DataTable导出到Excel文件,从Excel文件读取数据. using System; using System.IO; using System.Dat ...

  8. C# Excel操作类 ExcelHelper

    实现C#与Excel文件的交互操作,实现以下功能: 1.DataTable 导出到 Excel文件 2.Model数据实体导出到 Excel文件[List<Model>] 3.导出数据到模 ...

  9. [.Net] C# Excel操作类 ExcelHelper

    实现C#与Excel文件的交互操作,实现以下功能: 1.DataTable 导出到 Excel文件 2.Model数据实体导出到 Excel文件[List<Model>] 3.导出数据到模 ...

  10. 2019.06.05 ABAP EXCEL 操作类代码 OLE方式(模板下载,excel上传,内表下载)

    一般使用标准的excel导入方法9999行,修改了标准的excel导入FM 整合出类:excel的 模板下载,excel上传,ALV内表下载功能. 在项目一开始可以SE24创建一个类来供整体开发使用, ...

随机推荐

  1. Fastreport使用经验(转)在Delphi程序中访问报表对象

    Fastreport使用经验(转) 在Delphi程序中访问报表对象 最基本的方法就是frxReport1.FindObject. 然后把返回的对象强制转换成它的类型,当然,在报表中必须真的有这么个东 ...

  2. Java for LeetCode 148 Sort List

    Sort a linked list in O(n log n) time using constant space complexity. 解题思路: 归并排序.快速排序.堆排序都是O(n log ...

  3. Java for LeetCode 065 Valid Number

    Validate if a given string is numeric. Some examples: "0" => true " 0.1 " =&g ...

  4. 【USACO】checker

    一看题目 经典的8皇后问题 不过是皇后数量可变而已 不用想 回溯法. 需要个生成每次可选择序列的函数, 在存储可选择的序列时按照先大后小的顺序排的.这样每次找最小和去掉最小都很方便,只要有个记录数量的 ...

  5. 高效开发 Android App 的 10 个建议(转)

    文章写的非常好,值得大家好好研究研究,仔细分析一下. 引文地址: http://www.cnblogs.com/xiaochao1234/p/3644989.html 假如要Google Play上做 ...

  6. AU版有锁机的福利,704越狱彻底解决+86问题,完美IM/FT,重启不掉APN设置

    http://bbs.25pp.com/thread-172881-1-1.html 串号99的是au版 串号013的是sb版 44050   AU为 找到咱们SB版的文件,为44020 http:/ ...

  7. Android之查看网络图片和网页HTML

    网络编程是Android应用中很重要的一部分,本文主要讲述了利用HttpURLConnection获取网络图片和HTML的方法. 获取网络图片 public class MainActivity ex ...

  8. md5sum 生成 经md5加密后的字符串

    ➜ ~ echo -n 'admin' | md5sum 21232f297a57a5a743894a0e4a801fc3 - ➜ ~ md5sum -h md5sum: invalid option ...

  9. List、Map、Set

    这样的题属于随意发挥题:这样的题比较考水平,两个方面的水平:一是要真正明白这些内容,二是要有较强的总结和表述能力.如果你明白,但表述不清楚,在别人那里则等同于不明白. 首先,List与Set具有相似性 ...

  10. 好用的PHP分页类

    <?php class Page { private $total;      //总记录 private $pagesize;    //每页显示多少条 private $limit;     ...