一种通过VBS快速将Excel转成CSV的方法
By
hi_aardio
at 2022-03-24 • 0人收藏 • 1106人看过
前面在使用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差一点点。。