import win.ui;
import console;
import web.script.json;
import godking.vlistEx;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469)
winform.add(
vlist={cls="vlistEx";text="自定义控件";left=86;top=47;right=644;bottom=401;z=1}
)
/*}}*/
var vm = web.script("VBScript");
vm.script = /*
Function ReadExcelRange(filePath, sheetName, rangeAddress)
' 创建Excel应用程序对象
Dim excelApp
Set excelApp = CreateObject("Excel.Application")
' 禁用Excel界面显示(提高性能)
excelApp.Visible = False
' 禁用警告提示(如文件已存在等)
excelApp.DisplayAlerts = False
On Error Resume Next ' 开启错误处理
' 打开工作簿
Dim workbook
Set workbook = excelApp.Workbooks.Open(filePath)
If Err.Number <> 0 Then
ReadExcelRange = "错误:无法打开文件 " & filePath
Exit Function
End If
' 获取工作表
Dim worksheet
Set worksheet = workbook.Worksheets(sheetName)
If Err.Number <> 0 Then
ReadExcelRange = "错误:工作表 '" & sheetName & "' 不存在"
workbook.Close False
Exit Function
End If
' 获取指定范围
Dim targetRange
Set targetRange = worksheet.Range(rangeAddress)
' 准备返回结果的二维数组
Dim result(), i, j
ReDim result(targetRange.Rows.Count - 1, targetRange.Columns.Count - 1)
' 将数据填充到数组中
For i = 1 To targetRange.Rows.Count
For j = 1 To targetRange.Columns.Count
result(i - 1, j - 1) = targetRange.Cells(i, j).Value
Next
Next
' 清理对象
workbook.Close False
excelApp.Quit
Set targetRange = Nothing
Set worksheet = Nothing
Set workbook = Nothing
Set excelApp = Nothing
' 返回结果数组
ReadExcelRange = result
On Error GoTo 0 ' 关闭错误处理
End Function
' 假设你想读取 "C:\Test.xlsx" 中 "Sheet1" 的 "A1:B2" 范围
' Dim data
' data = ReadExcelRange("C:\Test.xlsx", "Sheet1", "A1:B2")
' 现在 data 是一个二维数组,包含该范围的数据
*/
//通过 vm.script.函数名() 调用 VBScript 函数。
var ret = vm.script.ReadExcelRange("C:\test.xlsx", "Sheet1", "A1:C5");
winform.vlist.setTable(ret,,150,1);
console.dumpTable(ret);
console.log(type(ret))
winform.show();
win.loopMessage();
' 准备返回结果的二维数组
Dim result(), i, j
ReDim result(targetRange.Rows.Count - 1, targetRange.Columns.Count - 1)
' 将数据填充到数组中
For i = 1 To targetRange.Rows.Count
For j = 1 To targetRange.Columns.Count
result(i - 1, j - 1) = targetRange.Cells(i, j).Value
Next
Next
修改VBScript代码部分
' 使用Value2属性一次性获取所有数据(比逐单元格读取快得多)
Dim result
result = targetRange.Value2
完整代码分享(自己记录下)
import win.ui;
import console;
import web.script.json;
import godking.vlistEx;
/*DSG{{*/
var winform = win.form(text="aardio form";right=946;bottom=478)
winform.add(
button={cls="button";text="读取EXCEL数据";left=10;top=3;right=120;bottom=33;z=2};
vlist={cls="vlistEx";text="自定义控件";left=9;top=39;right=934;bottom=468;ah=1;aw=1;db=1;dl=1;dr=1;dt=1;edge=1;frame=1;z=1}
)
/*}}*/
var vm = web.script("VBScript");
vm.script = /*
Function ReadExcelRange(filePath, sheetName, rangeAddress)
' 创建Excel应用程序对象
Dim excelApp
Set excelApp = CreateObject("Excel.Application")
' 禁用Excel界面显示和警告提示(提高性能)
excelApp.Visible = False
excelApp.DisplayAlerts = False
excelApp.ScreenUpdating = False
excelApp.EnableEvents = False
On Error Resume Next ' 开启错误处理
' 打开工作簿
Dim workbook
Set workbook = excelApp.Workbooks.Open(filePath)
If Err.Number <> 0 Then
ReadExcelRange = "错误:无法打开文件 " & filePath
excelApp.Quit
Set excelApp = Nothing
Exit Function
End If
' 获取工作表
Dim worksheet
Set worksheet = workbook.Worksheets(sheetName)
If Err.Number <> 0 Then
ReadExcelRange = "错误:工作表 '" & sheetName & "' 不存在"
workbook.Close False
excelApp.Quit
Set excelApp = Nothing
Exit Function
End If
' 获取指定范围
Dim targetRange
Set targetRange = worksheet.Range(rangeAddress)
' 使用Value2属性一次性获取所有数据(比逐单元格读取快得多)
Dim result
result = targetRange.Value2
' 清理对象
workbook.Close False
excelApp.Quit
Set targetRange = Nothing
Set worksheet = Nothing
Set workbook = Nothing
Set excelApp = Nothing
' 返回结果数组
ReadExcelRange = result
On Error GoTo 0 ' 关闭错误处理
End Function
' 假设你想读取 "C:\Test.xlsx" 中 "Sheet1" 的 "A1:B2" 范围
' Dim data
' data = ReadExcelRange("C:\Test.xlsx", "Sheet1", "A1:B2")
' 现在 data 是一个二维数组,包含该范围的数据
*/
//通过 vm.script.函数名() 调用 VBScript 函数。
winform.button.oncommand = function(id,event){
var ret = vm.script.ReadExcelRange("C:\test.xlsx", "Sheet1", "A1:T1000");
winform.vlist.setTable(ret,table.remove(ret),-1,1);
}
winform.show();
win.loopMessage();