一种通过VBS快速将Excel转成CSV的方法

By hi_aardio at 2022-03-24 • 0人收藏 • 1113人看过

前面在使用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
2022-03-24   #1

简单做了个测试,转换成CSV完整,效率比ReoGrid高,比com.excel差一点点。。

2022-03-24   #2

vbs其实用adodb recordset对象来查询和导出excel是最合适的,就像sql那样查询然后组合成字符串,再保存成文件

2022-03-24   #3

回复#4 @jacen @the100s

谢谢耐心讲解。

我看过了,缺少 io.fullpath,文件会保存在当前要目录下。

无论改还是不改,它首先是创建了一个新的Excel(你想保存的),但是要等待长时间才这个Excel有内容了。

@the100s 测试23M的文件保存是成功的,表明reoGrid 对大文件的读取和保存一般情况下没问题。


我猜测可能是服务器产生的xlsx文档与reoGrid 本身解析的方式有不同。

也不纠结了。。

2022-03-24   #4


是,我有做过com.excel 和几个C#写的Excel读写做过比较,目前看下来,Excel2CSV还是com.excel最快,其次就是调用VBS这个了。。。

登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...