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

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

前面在使用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这个了。。。

登录后方可回帖

登 录
信息栏
公告:
个人博客
专注分享
谢谢合作!

本站域名:HtmLayout.Cn
aardio可以快速开发上位机,本站主要记录了学习过程中遇到的问题和解决办法及aardio代码分享

这里主要专注于aardio学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.

Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
本 站 主 站:Stm32cube中文网
Sciter中文在线文档Sciter在线学习文档
空间赞助:才仁机械
打赏本站
Loading...