Ser*_*nik 2 vbscript excel ado wsh
是否有一种快速方法可以从Windows Scripting Host 操作现有 XLS文件的内容?
我们收到了客户提供的Excel模板.我们的任务是使用从Oracle数据库中获取的数据填充这些模板.
目前的方法是使用Windows Scripting Host和VBScript:
使用ADODB从Oracle获取数据:
Set db = CreateObject("ADODB.Connection")
SQL = "SELECT ..."
Set rs=db.execute(SQL)
Run Code Online (Sandbox Code Playgroud)使用VBScript在Windows Scripting Host中创建Excel对象:
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(xls_final)
Set objSheet = objWorkBook.Sheets(1)
Run Code Online (Sandbox Code Playgroud)然后像这样逐个单元填写模板:
If rs.EOF = False Then
rs.MoveFirst
Do Until rs.EOF
objSheet.Cells(RowNumber, 1).Value = rs("COLUMN1")
objSheet.Cells(RowNumber, 2).Value = rs("COLUMN2")
objSheet.Cells(RowNumber, 3).Value = rs("COLUMN3")
rs.MoveNext
Loop
End If
objWorkbook.Save
rs.Close
Run Code Online (Sandbox Code Playgroud)
问题是这些文件中的一些包含大量数据,并且需要花费数小时来填充它们.有更快的方法吗?
我觉得你很高兴在这里:
Set db = CreateObject("ADODB.Connection")
SQL = "SELECT ..."
Set rs=db.execute(SQL)
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(xls_final)
Set objSheet = objWorkBook.Sheets(1)
Run Code Online (Sandbox Code Playgroud)
但正如你所发现的那样,其余部分将会非常缓慢.与工作表的交互具有很高的开销,您需要为每行中的每一列付费.这有一些方法.
最简单的是
objSheet.Cells(1,1).CopyFromRecordset rs
Run Code Online (Sandbox Code Playgroud)
我建议你先试试.
| 归档时间: |
|
| 查看次数: |
6952 次 |
| 最近记录: |