Я ищу предложения по этому конкретному вопросу:Создание файлов Excel с VB6
Какой самый быстрый способ создания файлов Excel (XLS регулярные, а не те, XLSX) в Visual Basic 6 (VB6)?
Большое спасибо.
Я ищу предложения по этому конкретному вопросу:Создание файлов Excel с VB6
Какой самый быстрый способ создания файлов Excel (XLS регулярные, а не те, XLSX) в Visual Basic 6 (VB6)?
Большое спасибо.
Самый простой способ - установить ссылку в проекте на объект COM Excel и программно вставить все данные в лист.
Excel удалось прочитать HTML, так как Excel 2000.
простой способ писать HTML-таблицы и сохранять их с расширением .xls или, если это веб-приложение, очистить буфер ответа, установите тип ответа «application/vnd.ms-excel» и выпишите таблицу ничем иным.
Скопируйте и вставьте следующее в Блокнот и сохраните с расширением .xls и откройте его.
<table>
<tr><th>Color</th><th>Shape</th></tr>
<tr><td>Blue</td><td>Square</td></tr>
</table>
Отказ от ответственности:
Я не рекомендую этот метод, потому что это, вероятно, совместима только с Excel, но это самый простой способ я знаю.
Несмотря на то, что он создает таблицу Excel, ее таблица html открыта с помощью excel –
@Ori. Это правда, однако, если сохраненный excel достаточно любезен, чтобы сохранить его в собственном формате. Я не предлагаю, что это лучший метод, но в ситуации, когда Excel недоступен, он работает хорошо. – MyItchyChin
Установите ссылку (в меню «Инструменты» в VBA, Project в VB6) в библиотеку объектов Excel (не помните точное имя, но она начнется с «Microsoft» и будет иметь «Excel» где-то в имя).
Тогда что-то вроде этого:
Public Sub BuildAndSaveWorkbook
With New Excel.Workbook
' do all the stuff to create the content, then'
.SaveAs Filename:="WhateverYouWantToCallIt.xls", FileFormat:=xlExcel8
End With
End Sub
Не VBA, VB6 –
Ах. Забыл, что ссылки живут в другом меню в VB6, который я только установил на одной (одинокой, старой) машине в эти дни. –
Самый быстрый способ создания файла XLS является использование драйвера ISAM Jet для Excel. Вот пример, как это сделать с помощью ADO и ADOX:
' References:
' Microsoft ActiveX Data Objects 2.8 Library
' Microsoft ADO Ext. 2.8 for DDL and Security
Option Explicit
Private Sub Command1_Click()
Dim rs As ADODB.Recordset
Set rs = CreateRecordset(_
"ID", adDouble, _
"Name", adVarWChar, 200, _
"Value", adDouble, _
"Memo", adLongVarWChar)
rs.AddNew Array("ID", "Name", "Value", "Memo"), _
Array(1, "test", 5.1, "long long text here")
rs.AddNew Array("ID", "Name", "Value"), _
Array(1, "proba", 15.678)
AppendExcelSheet rs, App.Path & "\test.xls", "My Data", True
AppendExcelSheet rs, App.Path & "\test.xls", "More Data"
End Sub
Private Function CreateRecordset(ParamArray FldDesc()) As ADODB.Recordset
Dim lIdx As Long
Set CreateRecordset = New ADODB.Recordset
With CreateRecordset.Fields
Do While lIdx < UBound(FldDesc)
Select Case FldDesc(lIdx + 1)
Case adDouble, adDate, adCurrency, adBoolean
.Append FldDesc(lIdx), FldDesc(lIdx + 1), , adFldIsNullable
lIdx = lIdx + 2
Case adVarWChar
.Append FldDesc(lIdx), FldDesc(lIdx + 1), FldDesc(lIdx + 2), adFldIsNullable
lIdx = lIdx + 3
Case adLongVarWChar
.Append FldDesc(lIdx), FldDesc(lIdx + 1), -1, adFldIsNullable
lIdx = lIdx + 2
Case Else
Err.Raise vbObjectError, , "Not support Excel data type!"
End Select
Loop
End With
CreateRecordset.Open
End Function
Private Function AppendExcelSheet(_
rsSrc As Recordset, _
sXlsFile As String, _
Optional ByVal sSheetName As String, _
Optional ByVal bCreateNew As Boolean) As Boolean
Dim sConnStr As String
Dim oTbl As ADOX.Table
Dim oCol As ADOX.Column
Dim oFld As ADODB.Field
Dim rsDst As ADODB.Recordset
'--- init local vars
sConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & sXlsFile & ";Extended Properties=""Excel 8.0;Read Only=0"""
If LenB(sSheetName) = 0 Then
sSheetName = "Sheet1"
End If
'--- cleanup previous file
If bCreateNew Then
On Error Resume Next
SetAttr sXlsFile, vbArchive
Kill sXlsFile
On Error GoTo 0
End If
'--- create/open workbook and append worksheet
With New ADOX.Catalog
.ActiveConnection = sConnStr
Set oTbl = New ADOX.Table
oTbl.Name = sSheetName
For Each oFld In rsSrc.Fields
Set oCol = New ADOX.Column
With oCol
.Name = oFld.Name
.Type = oFld.Type
End With
oTbl.Columns.Append oCol
Next
.Tables.Append oTbl
End With
'--- copy data to range (named after worksheet)
If rsSrc.RecordCount > 0 Then
Set rsDst = New ADODB.Recordset
rsDst.Open "[" & sSheetName & "]", sConnStr, adOpenDynamic, adLockOptimistic
rsSrc.MoveFirst
Do While Not rsSrc.EOF
rsDst.AddNew
For Each oFld In rsSrc.Fields
rsDst.Fields(oFld.Name).Value = oFld.Value
Next
rsDst.Update
rsSrc.MoveNext
Loop
End If
End Function
Обратите внимание на Read Only=0
расширенное свойство на строку подключения.
Fastest =? Скорость выполнения или время/усилие кодирования? –