发布一个操作Excel类库 功能 excel文件创建修改 单元格数据格式编辑 图片 图表 插入控制 外部数据的添加 插入等下载地址:http://www.journeychina.com/OfficeEditor/ExcelEditor提供以下方法:'创建一个Excel对象
   Public Sub Creat()
    
 '打开一个Excel对象
    Public Sub Open(ByVal FileName As String)
    参数描述:FileName :excel文件路径 '获取一个工作表  
    Public Function GetSheet(ByVal SheetName As String) As Excel.Worksheet
    参数描述:SheetName :工作表名称 '添加一个工作表
    Public Function AddSheet(ByVal SheetName As String) As Excel.Worksheet '删除一个工作表
    Public Function DelSheet(ByVal SheetName As String) '重命名一个工作表    Public Function ReNameSheet(ByVal OldSheetName As String, ByVal NewSheetName As String) As Excel.Worksheet    Public Function ReNameSheet(ByVal Sheet As Excel.Worksheet, ByVal NewSheetName As String) As Excel.Worksheet
 '设置一个单元格的值    Public Sub SetCellValue(ByVal ws As Excel.Worksheet, ByVal x As Integer, ByVal y As Integer, ByVal value As Object)     参数说明  ws:要设值的工作表  X行Y列  value 值
    Public Sub SetCellValue(ByVal ws As String, ByVal x As Integer, ByVal y As Integer, ByVal value As Object)
 ' 设置一个单元格的属性 字体, 大小,颜色 ,对齐方式    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, Optional ByVal name As String = "宋体", Optional ByVal color As Excel.Constants = Excel.Constants.xlAutomatic, Optional ByVal HorizontalAlignment As Excel.Constants = Excel.Constants.xlLeft)
 参数说明 :ws:要设值的工作表 Startx 起始单元格的行 Starty 起始单元格的列 Endx 结束单元格的行 Endy 结束单元格的列   size  字体大小 name 字体   color  颜色 HorizontalAlignment  对齐方式    Public Sub SetCellProperty(ByVal wsn As String, ByVal Startx As Integer, ByVal Starty As Integer, ByVal Endx As Integer, ByVal Endy As Integer, Optional ByVal size As Integer = 12, Optional ByVal name As String = "宋体", Optional ByVal color As Excel.Constants = Excel.Constants.xlAutomatic, Optional ByVal HorizontalAlignment As Excel.Constants = Excel.Constants.xlAutomatic.xlRight)
'合并单元格
    Public Sub UniteCells(ByVal ws As Excel.Worksheet, ByVal Startx As Integer, ByVal Starty As Integer, ByVal Endx As Integer, ByVal Endy As Integer)参数说明 :ws:要设值的工作表 Startx 起始单元格的行 Starty 起始单元格的列 Endx 结束单元格的行 Endy 结束单元格的列 
'将内存中数据表格插入到Excel指定工作表的指定位置   为在使用摩板时控制格式时使用
    Public Sub InsertTable(ByVal dt As Data.DataTable, ByVal ws As String, ByVal startX As Integer, ByVal startY As Integer)  Public Sub InsertTable(ByVal dt As Data.DataTable, ByVal ws As Excel.Worksheet, ByVal startX As Integer, ByVal startY As Integer)
  '将内存中数据表格添加到Excel指定工作表的指定位置
    Public Sub AddTable(ByVal dt As Data.DataTable, ByVal ws As String, ByVal startX As Integer, ByVal startY As Integer)
  Public Sub AddTable(ByVal dt As Data.DataTable, ByVal ws As Excel.Worksheet, ByVal startX As Integer, ByVal startY As Integer)  '插入图片操作"
 Sub InsertPictures(ByVal Filename As String, ByVal ws As String) Sub InsertPictures(ByVal Filename As String, ByVal ws As String, ByVal Height As Integer, ByVal Width As Integer) Sub InsertPictures(ByVal Filename As String, ByVal ws As String, ByVal left As Integer, ByVal top As Integer, ByVal Height As Integer, ByVal Width As Integer)
插入图表操作"
    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, Optional ByVal ChartDataType As Excel.XlRowCol = Excel.XlRowCol.xlColumns)    参数说明 :ChartType 为图表类型 ws:要设值的工作表名 DataSourcesX1 图表数据源起始单元格的行 DataSourcesY1 图表数据源起始单元格的列 DataSourcesX2 图表数据源结束单元格的行 DataSourcesY2 图表数据源结束单元格的列  ChartDataType  图表数据数据方式    ' 保存文档
    Public Function Save() As Boolean    ' 文档另存为
    Public Function SaveAs(ByVal FileName) As Boolean' 关闭一个Excel对象,销毁对象
    Public Sub Close()这个一定要有!要不然 在系统进程中回有很EXCEL进程没有销毁!
使用方法:引用:VBExcelWordEditor.dll   com引用: Microsoft Excel 10.0 Object Library
暂时只做了这些功能,慢慢扩展 
  

解决方案 »

  1.   

    性能如何?
    COM如何更好的释放,我正在这两件事烦脑。
    你那释放COM资源在Asp.net下可行吗?
      

  2.   

    我的DEMO就是在C#的!c#调用VB写的DLL
    没有问题, to :henryfan1(每天好心情(*_*)) 
    COM资源释放绝大多数情况没有问题,主要你及时调用.close方法,关闭程序 就不会导致有又程序产生EXCEL进程没有销毁!asp.net应该也没有问题,因为没有涉及到客户端的操作,asp.net的权限在服务器上操作COM应该是没有问题
    不过我是在WINFORM下调试的!应该还是第一版,回不断完善的!谢谢大家的支持
    跟完善一点的时候,我回发源码的!:)
      

  3.   

    可以给SourceCode大家一起扩充吗?
      

  4.   

    能不能做到可视化编辑啊?比如现成的excel模板,向单元格中添加指定数据,至少应该出现excel,然后点击excel的某个单元格,然后激活设计器窗口,设计完后提交,单元格中取得数据。至少应该想办法把excel嵌入winform中,这可是个很大的难题。
      

  5.   

    to :boyxia(无天刀绝) 
    我感觉既然用程序来自动操作EXCEL,所以就特地没有让EXCEL截面显示
    比如现成的excel模板,向单元格中添加指定数据这个你可以所以类的open方法打开指定EXCEL,然后用就一样的操作了,不会改变原由的格式的!其中就有insertdatatable方法就是为想摸版中插入数据用,一插入的方式想摸版中添加数据,可以控制格式!
      

  6.   

    这一半里还没有做公式的编辑,呵呵,公式的编辑也是很麻烦,但觉得这些还是不应该叫给程序去,如果涉及到公式等比较复杂的,建议还是用摸班做比较好控制,毕竟用程序操作没有直接操作EXCEL好!
      

  7.   

    这一版里还没有做公式的编辑,呵呵,公式的编辑也是很麻烦,但觉得这些还是不应该叫给程序去,如果涉及到公式等比较复杂的,建议还是用摸班做比较好控制,毕竟用程序操作没有直接操作EXCEL好!
      

  8.   

    谢谢楼主~~~~~~~在研究ing~~~~~:))
      

  9.   

    楼主你好,
    ASP。NET和WIN不同,WIN你结速了程序那个时进程的销毁,ASP。NET就不是。
    ASP。NET调用COM并不是问题,可释放是个很头痛的事(个人感觉)。
    说声对不起,我反编译了你好个CLOSE方法,在ASP。NET是不可行:)
      

  10.   

    .close方法中。并没有为了结束进程,就强行结束所有excel进程,所以在asp.net中可能回有问题,我在想别的方法还有我是在执行某个方法的时候在结束的位置执行close方法,我的DEMO就是那样的 ,所以不关闭程序也是没有不能接受的进程的!所以我也说了,要及时调用.close方法!那样才没有问题。(asp.net的环境,正在实验)
      

  11.   

    贴源码,扫后,我回把工程文件提供下载的!Public Class ExcelEditor
    #Region " 成员变量"    Dim mFilename As String         'excel文件名称
        Dim app As Excel.Application   'excel对象
        Dim wbs As Excel.Workbooks     'excel工作簿对象集合
        Dim wb As Excel.Workbook       'excel工作簿对象
        Dim ws As Excel.Worksheet      'excel工作表对象#End Region
    #Region " 构造函数"    Public Sub New()
        End Sub#End Region#Region " 类方法"#Region " 创建"
        ' 创建一个Excel对象
        Public Sub Creat()
            app = New Excel.Application
            wbs = app.Workbooks
            wb = wbs.Add(True)
        End Sub    ' 打开一个Excel对象
        Public Sub Open(ByVal FileName As String)
            app = New Excel.Application
            wbs = app.Workbooks
            wb = wbs.Open(FileName)
            mFilename = FileName    End Sub#End Region#Region " 操作工作表"    '获取一个工作表    Public Function GetSheet(ByVal SheetName As String) As Excel.Worksheet
            Dim s As Excel.Worksheet = wb.Worksheets(SheetName)
            Return s
        End Function
        '添加一个工作表
        Public Function AddSheet(ByVal SheetName As String) As Excel.Worksheet        Dim s As Excel.Worksheet = wb.Worksheets.Add()
            s.Name = SheetName        Return s    End Function
        '删除一个工作表
        Public Function DelSheet(ByVal SheetName As String)        CType(wb.Worksheets(SheetName), Excel.Worksheet).Delete()    End Function
        '重命名一个工作表    Public Function ReNameSheet(ByVal OldSheetName As String, ByVal NewSheetName As String) As Excel.Worksheet        Dim s As Excel.Worksheet = wb.Worksheets(OldSheetName)
            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#End Region
    #Region " 操作工作单元格"        '设置一个单元格的值
            '参数说明  ws:要设值的工作表  X行Y列  value 值    Public Sub SetCellValue(ByVal ws As Excel.Worksheet, ByVal x As Integer, ByVal y As Integer, ByVal value As Object)
            ws.Cells(x, y) = value
        End Sub    '参数说明  ws:要设值的工作表的名称  X行Y列  value 值    Public Sub SetCellValue(ByVal ws As String, ByVal x As Integer, ByVal y As Integer, ByVal value As Object)        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, Optional ByVal name As String = "宋体", Optional ByVal color As Excel.Constants = Excel.Constants.xlAutomatic, Optional ByVal HorizontalAlignment As Excel.Constants = Excel.Constants.xlLeft)
            ws.Range(ws.Cells(Startx, Starty), ws.Cells(Endx, Endy)).Font.Name = name
            ws.Range(ws.Cells(Startx, Starty), ws.Cells(Endx, Endy)).Font.Size = size
            ws.Range(ws.Cells(Startx, Starty), ws.Cells(Endx, Endy)).Font.Color = color
            ws.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, Optional ByVal size As Integer = 12, Optional ByVal name As String = "宋体", Optional ByVal color As Excel.Constants = Excel.Constants.xlAutomatic, Optional ByVal HorizontalAlignment As Excel.Constants = Excel.Constants.xlAutomatic.xlRight)
            Dim ws As Excel.Worksheet = GetSheet(wsn)
            ws.Range(ws.Cells(Startx, Starty), ws.Cells(Endx, Endy)).Font.Name = name
            ws.Range(ws.Cells(Startx, Starty), ws.Cells(Endx, Endy)).Font.Size = size
            ws.Range(ws.Cells(Startx, Starty), ws.Cells(Endx, Endy)).Font.Color = color
            ws.Range(ws.Cells(Startx, Starty), ws.Cells(Endx, Endy)).HorizontalAlignment = HorizontalAlignment    End Sub
      

  12.   

    接上    '合并单元格
        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.Range(ws.Cells(x1, y1), ws.Cells(x2, y2)).Merge()    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).Range(GetSheet(ws).Cells(x1, y1), GetSheet(ws).Cells(x2, y2)).Merge()    End Sub
        '将内存中数据表格插入到Excel指定工作表的指定位置   为在使用摩板时控制格式时使用
        Public Sub InsertTable(ByVal dt As Data.DataTable, ByVal ws As String, ByVal startX As Integer, ByVal startY As Integer)        For i As Integer = 0 To dt.Rows.Count - 1
                GetSheet(ws).Rows(startX.ToString() & ":" & startX.ToString).select()
                app.Selection.Insert()
                For j As Integer = 0 To dt.Columns.Count - 1                GetSheet(ws).Cells(startX, j + startY) = dt.Rows(i).ItemArray(j)            Next        Next    End Sub
        Public Sub InsertTable(ByVal dt As Data.DataTable, ByVal ws As Excel.Worksheet, ByVal startX As Integer, ByVal startY As Integer)        For i As Integer = 0 To dt.Rows.Count - 1
                ws.Rows(startX.ToString() & ":" & startX.ToString).select()
                app.Selection.Insert()
                For j As Integer = 0 To dt.Columns.Count - 1                ws.Cells(startX, j + startY) = dt.Rows(i).ItemArray(j)            Next        Next    End Sub
        '将内存中数据表格添加到Excel指定工作表的指定位置
        Public Sub AddTable(ByVal dt As Data.DataTable, ByVal ws As String, ByVal startX As Integer, ByVal startY As Integer)        For i As Integer = 0 To dt.Rows.Count - 1
                'GetSheet(ws).Rows(startX.ToString() & ":" & startX.ToString).select()
                'app.Selection.Insert()
                For j As Integer = 0 To dt.Columns.Count - 1                GetSheet(ws).Cells(i + startX, j + startY) = dt.Rows(i).ItemArray(j)            Next        Next    End Sub
        Public Sub AddTable(ByVal dt As Data.DataTable, ByVal ws As Excel.Worksheet, ByVal startX As Integer, ByVal startY As Integer)
            For i As Integer = 0 To dt.Rows.Count - 1
                'GetSheet(ws).Rows(startX.ToString() & ":" & startX.ToString).select()
                'app.Selection.Insert()
                For j As Integer = 0 To dt.Columns.Count - 1                ws.Cells(i + startX, j + startY) = dt.Rows(i).ItemArray(j)            Next
            Next    End Sub
    #End Region
    #Region " 插入图片操作"    Sub InsertPictures(ByVal Filename As String, ByVal ws As String)        GetSheet(ws).Pictures.Insert(Filename).Select()    End Sub
        Sub InsertPictures(ByVal Filename As String, ByVal ws As String, ByVal Height As Integer, ByVal Width As Integer)        GetSheet(ws).Pictures.Insert(Filename).Select()        app.Selection.ShapeRange.Height = Height
            app.Selection.ShapeRange.Width = Width    End Sub    Sub InsertPictures(ByVal Filename As String, ByVal ws As String, ByVal left As Integer, ByVal top As Integer, ByVal Height As Integer, ByVal Width As Integer)        GetSheet(ws).Pictures.Insert(Filename).Select()
            app.Selection.ShapeRange.IncrementLeft(left)
            app.Selection.ShapeRange.IncrementTop(top)
            app.Selection.ShapeRange.Height = Height
            app.Selection.ShapeRange.Width = Width    End Sub#End Region
    #Region " 插入图表操作"
        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, Optional ByVal ChartDataType As Excel.XlRowCol = Excel.XlRowCol.xlColumns)
            wb.Charts.Add()
            With wb.ActiveChart
                .ChartType = ChartType
                .SetSourceData(GetSheet(ws).Range(GetSheet(ws).Cells(DataSourcesX1, DataSourcesY1), GetSheet(ws).Cells(DataSourcesX2, DataSourcesY2)), ChartDataType)
                .Location(Excel.XlChartLocation.xlLocationAsObject, ws)
            End With
        End Sub#End Region#Region " 保存,关闭"
            ' 保存文档
        Public Function Save() As Boolean
            If mFilename = "" Then
                Return False
                Exit Function
            Else
                Try
                    wb.Save()
                    Return True
                    Exit Function            Catch ex As Exception
                    Return False
                    Exit Function
                End Try
            End If
        End Function
        ' 文档另存为
        Public Function SaveAs(ByVal FileName) As Boolean
            Try
                wb.SaveAs(FileName)
                Return True
                Exit Function        Catch ex As Exception
                Return False
                Exit Function
            End Try
        End Function    ' 关闭一个Excel对象,销毁对象
        Public Sub Close()
            wb.Saved = True
            wb.Close()
            wbs.Close()
            app.Quit()
            wb = Nothing
            wbs = Nothing
            app = Nothing
            GC.Collect()    End Sub#End Region
    #End RegionEnd Class
      

  13.   

    hao dong dong .xie xie~~~
      

  14.   

    好象不能下了,能不能麻烦楼主发给一份,谢谢
    [email protected]
      

  15.   

    也给我一份吧
    [email protected]
      

  16.   

    to: tiezi(铁子)
    vb下编译楼主的代码,需要excel的什么支持啊?谢谢
      

  17.   

    麻烦给我一份  [email protected]多谢  多谢
      

  18.   

    下不了,给我发一份把
    [email protected]
    谢谢
      

  19.   

    给我一份吧 [email protected]