gpt4 book ai didi

excel - 从 Windows Scripting Host 操作 Excel 文件

转载 作者:行者123 更新时间:2023-12-03 00:05:58 25 4
gpt4 key购买 nike

有没有一种快速方法可以从 Windows Scripting Host 操作现有 XLS 文件的内容?

我们有从客户那里收到的 Excel 模板。我们的任务是用从 Oracle 数据库获取的数据填充这些模板。

当前的方法是使用 Windows Scripting Host 和 VBScript:

  1. 使用 ADODB 从 Oracle 获取数据:

    Set db = CreateObject("ADODB.Connection")
    SQL = "SELECT ..."
    Set rs=db.execute(SQL)
  2. 使用 VBScript 在 Windows Scripting Host 中创建 Excel 对象:

    Set objExcel = CreateObject("Excel.Application")  
    Set objWorkbook = objExcel.Workbooks.Open(xls_final)
    Set objSheet = objWorkBook.Sheets(1)
  3. 然后逐个单元格填写模板,如下所示:

    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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com