昨天,今天,明天,每天的每天,你是否都多懂得一点点...

星期二, 七月 14, 2009

csv 转 excel

稍微改了一下原来的代码,让它可以take参数


dim objArgs
Set objArgs = WScript.Arguments  
dim strSrc 
strSrc = objArgs(0) 
dim strTgt 
strTgt = objArgs(1)

dim objExcel
set objExcel = Createobject("Excel.Application")
objExcel.Workbooks.Open strSrc
objExcel.ActiveWorkbook.SaveAs strTgt, -4143, , , False, False
objExcel.Quit

使用方法:
set csv_name=in.xls
set excel_name=out.xls
cscript cvs2xls.vbs %cd%\%csv_name% %cd%\%excel_name%


刚才把excel 会锁文件的总是解决了,当然,它带来了一个新问题

start excel /e /r 16003_12_25_19.csv

这样就不会锁了.不过,这样是以只读打开,你也改不了了. 

/e 是不显示启动画面

/r 是只读

因为如果转换大的文件的话,可能会花更长的时间,虽然spread32 启动比excel 快很多, 但还是得不偿失.所以,大文件,还是用excel 打开,而小文件,就转换后再由spread32 打开.


我用的批处理文件:

set csv_name=%~n1_%time:~0,8%.csv
set csv_name=%csv_name::=_%
set csv_name=%csv_name: =%
set excel_name=%~n1_%time:~0,8%.xls
set excel_name=%excel_name::=_%
set excel_name=%excel_name: =%
copy ..\%~n1.dat %csv_name%
f:\tools\Vim\vim72\gvim.exe -e -s -c "%%s/\V|/\t/g |:w" %csv_name%

start excel /e /r %csv_name%
::cscript cvs2xls.vbs %cd%\%csv_name% %cd%\%excel_name%
::start F:\gre\Spread32\Spread32.exe %excel_name%


我用的可不是真的csv 文件,我把逗号换成了tab, 因为excel 的默认分隔符是tab, 而不是逗号,如果用逗号的话,就会分不开了.



--
Feng

没有评论:

其它博客地址

此博客的同步博客地址: http://fengnz.wordpress.com
这里进入我的MSN SPACE.