雁滩高清摄像头:Listview导出EXCEL功能模块007
来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 23:01:36
Public Function dhListviewToExcel(ByRef lvw As MSComctlLib.ListView, ByVal strFileName As String, Optional FileFormat As XlFileFormat = xlWorkbookNormal, Optional blnHeaders As Boolean = True) As Boolean
Dim intColCnt As Integer ' 列之计数器。
Dim intColumns As Integer ' 字段数。
Dim intRowCnt As Integer ' 栏之计数器。
Dim intStartRow As Integer ' 开始列数。
Dim intVisibleColumns() As Integer ' 表头资料。
Dim itm As ListItem
Dim lngResults As Long ' 回传数值。
Dim objExcel As Excel.Application
Dim objWorkbook As Excel.Workbook
Dim objWorksheet As Excel.Worksheet
Dim objRange As Excel.Range
Dim strArray() As String ' 表身资料。
Dim strFileExtensionType As String ' 延伸檔名。
'------------------------------------------------
' A0 侦测作业。
'------------------------------------------------
' 判断 listview 是否有资料。
If lvw.SelectedItem Is Nothing Then
MsgBox "表格没有任何资料。", vbOKOnly + vbInformation, "汇出失败"
GoTo ExitFunction
End If
' 询问使用者汇出范围。
lngResults = MsgBox("只汇出选择列数之资料?", vbYesNoCancel + vbQuestion + vbDefaultButton2, "汇出选择列数")
If lngResults = vbCancel Then
GoTo ExitFunction
End If
Screen.MousePointer = vbHourglass
' 测试是否本机是否安装 Excel。
On Error Resume Next
Set objExcel = New Excel.Application
If Err.Number > 0 Then
MsgBox "本机未安装 MS Excel 。", vbOKOnly + vbCritical, "加载 Excel 失败"
GoTo ExitFunction
End If
'------------------------------------------------
' B0 Excel 相关设定作业。
'------------------------------------------------
'On Error GoTo ExportToExcel_EH
' 不让使用者操作。
objExcel.Interactive = False
' 背后作业。
If objExcel.Visible = False Then
objExcel.Visible = True
End If
' 窗口最大化。
objExcel.WindowState = xlMaximized
' 设定 Wokkbook 对象。
Set objWorkbook = objExcel.Workbooks.Add
' 设定 Worksheet 对象,指向 Sheet 1。
Set objWorksheet = objWorkbook.Sheets(1)
' 设定 Range 对象,指向 Row 1。
Set objRange = objWorksheet.Rows(1)
' 设定表头字号、粗体。
objRange.Font.Size = 9
objRange.Font.Bold = True
'------------------------------------------------
' C0 Excel 表头部份相关设定作业。
'------------------------------------------------
For intColCnt = 1 To lvw.ColumnHeaders.Count
If lvw.ColumnHeaders(intColCnt).Width <> 0 Then
intColumns = intColumns + 1
ReDim Preserve intVisibleColumns(1 To intColumns)
intVisibleColumns(intColumns) = intColCnt
objRange.Cells(1, intColumns) = lvw.ColumnHeaders(intColCnt).Text
With objWorksheet.Columns(intColumns)
Select Case LCase(lvw.ColumnHeaders(intColCnt).Tag)
Case "string", ""
.NumberFormat = "@"
Case "number"
.NumberFormat = "#,##0.00_);(#,##0.00)"
.HorizontalAlignment = xlRight
Case "date"
.NumberFormat = "yyyy/mm/dd"
.HorizontalAlignment = xlRight
End Select
End With
End If
Next intColCnt
'------------------------------------------------
' D0 取得 listview 数据,置入数组。
'------------------------------------------------
ReDim strArray(1 To lvw.ListItems.Count, 1 To intColumns)
intStartRow = 2
For Each itm In lvw.ListItems
If lngResults = vbNo Or itm.Selected Then
intRowCnt = intRowCnt + 1
For intColCnt = 1 To intColumns
If intVisibleColumns(intColCnt) = 1 Then
strArray(intRowCnt, 1) = itm.Text
Else
strArray(intRowCnt, intColCnt) = itm.SubItems(intVisibleColumns(intColCnt) - 1)
End If
Next intColCnt
End If
Next itm
'------------------------------------------------
' E0 数组数据,置入 Excel。
'------------------------------------------------
With objWorksheet
.Range(.Cells(2, 1), .Cells(2 + intRowCnt - 1, intColumns)) = strArray
End With
objWorksheet.Columns.AutoFit '------------------------------------------------
' F0 取得延伸檔名。
' 參閱 Excel 說明裡的「Microsoft Excel 提供的檔案格式轉換器」
'------------------------------------------------
Select Case FileFormat
Case xlSYLK
strFileExtensionType = "slk"
Case xlWKS
strFileExtensionType = "wks"
Case xlWK1, xlWK1ALL, xlWK1FMT
strFileExtensionType = "wk1"
Case xlCSV, xlCSVMac, xlCSVWindows
strFileExtensionType = "csv"
Case xlDBF2, xlDBF3, xlDBF4
strFileExtensionType = "dbf"
Case xlWorkbookNormal, xlExcel2FarEast, xlExcel3, xlExcel4, xlExcel4Workbook, xlExcel5, xlExcel7, xlExcel9795
strFileExtensionType = "xls"
Case xlHtml
strFileExtensionType = "htm"
Case xlTextMac, xlTextWindows, xlUnicodeText, xlCurrentPlatformText
strFileExtensionType = "txt"
Case xlTextPrinter
strFileExtensionType = "prn"
Case Else
strFileExtensionType = "dat"
End Select
' ------------------------------------------------
' G0 另存檔案。
' ------------------------------------------------
If InStr(1, strFileName, ".") = 0 Then '生成文件名
' 組合檔案名稱。
strFileName = strFileName & "." & strFileExtensionType ' 另存檔案。
objWorksheet.SaveAs strFileName, FileFormat End If '------------------------------------------------
' Z0 结束作业。
'------------------------------------------------
' 关闭 Workbook。
objWorkbook.Close
' 结束 Excel 作业。
objExcel.Quit
' 载出对象变量。
Set objRange = Nothing
Set objWorksheet = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing
' 此处可以设定是否可以编辑 Excel。
objExcel.Interactive = True
dhListviewToExcel = True
ExitFunction:
Screen.MousePointer = vbDefault
Exit Function
ExportToExcel_EH: ' 出现错误讯息。
MsgBox "汇出失败,原因如下:" & vbCrLf & vbCrLf & Err.Number & ": " & Err.Description, _
vbOKOnly + vbCritical, "汇出失败" ' 结束 Excel 作业。
objExcel.Quit ' 载出对象变量。
Set objRange = Nothing
Set objWorksheet = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing GoTo ExitFunction
End Function
Dim intColCnt As Integer ' 列之计数器。
Dim intColumns As Integer ' 字段数。
Dim intRowCnt As Integer ' 栏之计数器。
Dim intStartRow As Integer ' 开始列数。
Dim intVisibleColumns() As Integer ' 表头资料。
Dim itm As ListItem
Dim lngResults As Long ' 回传数值。
Dim objExcel As Excel.Application
Dim objWorkbook As Excel.Workbook
Dim objWorksheet As Excel.Worksheet
Dim objRange As Excel.Range
Dim strArray() As String ' 表身资料。
Dim strFileExtensionType As String ' 延伸檔名。
'------------------------------------------------
' A0 侦测作业。
'------------------------------------------------
' 判断 listview 是否有资料。
If lvw.SelectedItem Is Nothing Then
MsgBox "表格没有任何资料。", vbOKOnly + vbInformation, "汇出失败"
GoTo ExitFunction
End If
' 询问使用者汇出范围。
lngResults = MsgBox("只汇出选择列数之资料?", vbYesNoCancel + vbQuestion + vbDefaultButton2, "汇出选择列数")
If lngResults = vbCancel Then
GoTo ExitFunction
End If
Screen.MousePointer = vbHourglass
' 测试是否本机是否安装 Excel。
On Error Resume Next
Set objExcel = New Excel.Application
If Err.Number > 0 Then
MsgBox "本机未安装 MS Excel 。", vbOKOnly + vbCritical, "加载 Excel 失败"
GoTo ExitFunction
End If
'------------------------------------------------
' B0 Excel 相关设定作业。
'------------------------------------------------
'On Error GoTo ExportToExcel_EH
' 不让使用者操作。
objExcel.Interactive = False
' 背后作业。
If objExcel.Visible = False Then
objExcel.Visible = True
End If
' 窗口最大化。
objExcel.WindowState = xlMaximized
' 设定 Wokkbook 对象。
Set objWorkbook = objExcel.Workbooks.Add
' 设定 Worksheet 对象,指向 Sheet 1。
Set objWorksheet = objWorkbook.Sheets(1)
' 设定 Range 对象,指向 Row 1。
Set objRange = objWorksheet.Rows(1)
' 设定表头字号、粗体。
objRange.Font.Size = 9
objRange.Font.Bold = True
'------------------------------------------------
' C0 Excel 表头部份相关设定作业。
'------------------------------------------------
For intColCnt = 1 To lvw.ColumnHeaders.Count
If lvw.ColumnHeaders(intColCnt).Width <> 0 Then
intColumns = intColumns + 1
ReDim Preserve intVisibleColumns(1 To intColumns)
intVisibleColumns(intColumns) = intColCnt
objRange.Cells(1, intColumns) = lvw.ColumnHeaders(intColCnt).Text
With objWorksheet.Columns(intColumns)
Select Case LCase(lvw.ColumnHeaders(intColCnt).Tag)
Case "string", ""
.NumberFormat = "@"
Case "number"
.NumberFormat = "#,##0.00_);(#,##0.00)"
.HorizontalAlignment = xlRight
Case "date"
.NumberFormat = "yyyy/mm/dd"
.HorizontalAlignment = xlRight
End Select
End With
End If
Next intColCnt
'------------------------------------------------
' D0 取得 listview 数据,置入数组。
'------------------------------------------------
ReDim strArray(1 To lvw.ListItems.Count, 1 To intColumns)
intStartRow = 2
For Each itm In lvw.ListItems
If lngResults = vbNo Or itm.Selected Then
intRowCnt = intRowCnt + 1
For intColCnt = 1 To intColumns
If intVisibleColumns(intColCnt) = 1 Then
strArray(intRowCnt, 1) = itm.Text
Else
strArray(intRowCnt, intColCnt) = itm.SubItems(intVisibleColumns(intColCnt) - 1)
End If
Next intColCnt
End If
Next itm
'------------------------------------------------
' E0 数组数据,置入 Excel。
'------------------------------------------------
With objWorksheet
.Range(.Cells(2, 1), .Cells(2 + intRowCnt - 1, intColumns)) = strArray
End With
objWorksheet.Columns.AutoFit '------------------------------------------------
' F0 取得延伸檔名。
' 參閱 Excel 說明裡的「Microsoft Excel 提供的檔案格式轉換器」
'------------------------------------------------
Select Case FileFormat
Case xlSYLK
strFileExtensionType = "slk"
Case xlWKS
strFileExtensionType = "wks"
Case xlWK1, xlWK1ALL, xlWK1FMT
strFileExtensionType = "wk1"
Case xlCSV, xlCSVMac, xlCSVWindows
strFileExtensionType = "csv"
Case xlDBF2, xlDBF3, xlDBF4
strFileExtensionType = "dbf"
Case xlWorkbookNormal, xlExcel2FarEast, xlExcel3, xlExcel4, xlExcel4Workbook, xlExcel5, xlExcel7, xlExcel9795
strFileExtensionType = "xls"
Case xlHtml
strFileExtensionType = "htm"
Case xlTextMac, xlTextWindows, xlUnicodeText, xlCurrentPlatformText
strFileExtensionType = "txt"
Case xlTextPrinter
strFileExtensionType = "prn"
Case Else
strFileExtensionType = "dat"
End Select
' ------------------------------------------------
' G0 另存檔案。
' ------------------------------------------------
If InStr(1, strFileName, ".") = 0 Then '生成文件名
' 組合檔案名稱。
strFileName = strFileName & "." & strFileExtensionType ' 另存檔案。
objWorksheet.SaveAs strFileName, FileFormat End If '------------------------------------------------
' Z0 结束作业。
'------------------------------------------------
' 关闭 Workbook。
objWorkbook.Close
' 结束 Excel 作业。
objExcel.Quit
' 载出对象变量。
Set objRange = Nothing
Set objWorksheet = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing
' 此处可以设定是否可以编辑 Excel。
objExcel.Interactive = True
dhListviewToExcel = True
ExitFunction:
Screen.MousePointer = vbDefault
Exit Function
ExportToExcel_EH: ' 出现错误讯息。
MsgBox "汇出失败,原因如下:" & vbCrLf & vbCrLf & Err.Number & ": " & Err.Description, _
vbOKOnly + vbCritical, "汇出失败" ' 结束 Excel 作业。
objExcel.Quit ' 载出对象变量。
Set objRange = Nothing
Set objWorksheet = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing GoTo ExitFunction
End Function
Listview导出EXCEL功能模块007
Listview导出EXCEL功能模块
VB Listview导出EXCEL功能模块
POI导出EXCEL
导出EXCEL实例
php 导出excel
php?导出excel类
C# 导出Excel
巧用EXCEL数据导入导出功能
完美解决导出EXCEL乱码问题
vb ado datagrid 数据导出到excel
cxGrid V6以上导出EXCEL的方法
excel表格如何导出工作表标签
C# 导出Excel 禁止单元格换行
Excel导出。PageControl - Delphi / VCL组件开发及应用
excel表格如何导出工作表标签1
vb ado datagrid 数据导出到excel (转)
listview 用法
VB操作网页功能模块
VC++下的m_grid控件实现Accesse数据导出到Excel
解决用友软件导出的EXCEL表的零值数据无法参与计算的问题
用DLL实现把数据库的记录导出到EXCEL中(VB)转
大智慧股票池怎么导出股票到TXT或者EXCEL,DOC之类??
用DLL实现把数据库的记录导出到EXCEL中(VB) - 应用程序 - VB教程