发布一个操作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
暂时只做了这些功能,慢慢扩展
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
暂时只做了这些功能,慢慢扩展
COM如何更好的释放,我正在这两件事烦脑。
你那释放COM资源在Asp.net下可行吗?
没有问题, to :henryfan1(每天好心情(*_*))
COM资源释放绝大多数情况没有问题,主要你及时调用.close方法,关闭程序 就不会导致有又程序产生EXCEL进程没有销毁!asp.net应该也没有问题,因为没有涉及到客户端的操作,asp.net的权限在服务器上操作COM应该是没有问题
不过我是在WINFORM下调试的!应该还是第一版,回不断完善的!谢谢大家的支持
跟完善一点的时候,我回发源码的!:)
我感觉既然用程序来自动操作EXCEL,所以就特地没有让EXCEL截面显示
比如现成的excel模板,向单元格中添加指定数据这个你可以所以类的open方法打开指定EXCEL,然后用就一样的操作了,不会改变原由的格式的!其中就有insertdatatable方法就是为想摸版中插入数据用,一插入的方式想摸版中添加数据,可以控制格式!
ASP。NET和WIN不同,WIN你结速了程序那个时进程的销毁,ASP。NET就不是。
ASP。NET调用COM并不是问题,可释放是个很头痛的事(个人感觉)。
说声对不起,我反编译了你好个CLOSE方法,在ASP。NET是不可行:)
#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
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
[email protected]
[email protected]
vb下编译楼主的代码,需要excel的什么支持啊?谢谢
[email protected]
谢谢