一种通过VBS快速将Excel转成CSV的方法
By
hi_aardio
at 2022-03-24 • 0人收藏 • 1294人看过
前面在使用ReoGrid的过程中,我发现它对量大一点的Excel处理,尤其是转成CSV不是特别满意(也有可能是使用不对),工作中,常要用到对大量数据的处理,转成CSV后再入数据库或处理不为是一种好的办法。
话不多说,直接上代码
import win.ui;
/*DSG{{*/
mainForm = win.form(text="aardio调用VB";right=959;bottom=591)
mainForm.add()
/*}}*/
import console;
import web.script;
import time;
console.open()
var tim = time.tick()
src_file=io.fullpath("\test.xlsx") //需要转化的Excel
dest_file=io.fullpath("\test.csv") //转化后的CSV
worksheet_number=1 //指定的sheet
//创建 VBScript 虚拟机
var vm = web.script("VBScript")
//加载 VBScript,也可以用 vm.doScript() 函数加载脚本。
//转化VBS脚本
vm.script = /*
Function Excel2CSVFunction(src_file,dest_file,worksheet_number)
csv_format = 6
Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim oExcel
Set oExcel = CreateObject("Excel.Application")
Dim oBook
Set oBook = oExcel.Workbooks.Open(src_file)
oBook.Worksheets(worksheet_number).Activate
oBook.SaveAs dest_file, csv_format
oBook.Close False
oExcel.Quit
End Function
*/
//通过 vm.script.函数名() 调用 VBScript 函数。
//功能实现
var ret = vm.script.Excel2CSVFunction(src_file,dest_file,worksheet_number);
console.log( ret );
console.log("转换完成!");
console.log((time.tick() - tim) / 1000)
mainForm.show();
return win.loopMessage();
4 个回复 | 最后更新于 2022-03-25
登录后方可回帖
简单做了个测试,转换成CSV完整,效率比ReoGrid高,比com.excel差一点点。。