有没有一种快速方法可以从 Windows Scripting Host 操作现有 XLS 文件的内容?
我们有从客户那里收到的 Excel 模板。我们的任务是用从 Oracle 数据库获取的数据填充这些模板。
当前的方法是使用 Windows Scripting Host 和 VBScript:
使用 ADODB 从 Oracle 获取数据:
Set db = CreateObject("ADODB.Connection") SQL = "SELECT ..." Set rs=db.execute(SQL)
使用 VBScript 在 Windows Scripting Host 中创建 Excel 对象:
Set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open(xls_final) Set objSheet = objWorkBook.Sheets(1)
然后逐个单元格填写模板,如下所示:
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
问题在于,其中一些文件包含大量数据,像这样填充它们需要几个小时。 有没有更快的方法?
最佳答案
我认为你到目前为止还不错:
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)
但正如您所发现的,其余部分将慢得惊人。与工作表的交互会产生很高的开销,您要为每一行的每一列付出代价。有一些方法可以解决这个问题。
最简单的是
objSheet.Cells(1,1).CopyFromRecordset rs
我建议您先尝试一下。
关于excel - 从 Windows Scripting Host 操作 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/766992/