iT邦幫忙

0

請教:如何利用 DOS 指令讀取 EXCEL 的 CSV 後,將其資料轉出為一 XML 格式的文字檔…

dos
ithonda 5 年前5949 瀏覽

小弟想將利用 DOS 指令,將 EXCEL 中的資料轉成 XML 的格式,不知可不可行…
說明:
1.csv檔案內容:(有二筆資料,第一行為欄位名稱)
====================
id,title,pic
001,title01,1.jpg
002,title02,2.jpg
====================

2.欲轉出的 xml 資料格式

<?xml version="1.0" encoding="UTF-8"?>
<list>
<my_rec>
<id>001</id>
<title>title01</title>
<pic>1.jpg</pic>
</my_rec>
<my_rec>
<id>002</id>
<title>title02</title>
<pic>2.jpg</pic>
</my_rec>
</list>
====================
請賜教,謝謝。

海綿寶寶 iT邦超人 1 級 ‧ 5 年前 檢舉
不可行

2 個回答

10
ccutmis
iT邦新手 1 級 ‧ 5 年前
最佳解答

1.用記事本新增一個文字檔,並把它存到C槽底下,命名為 csv2xml.vbs
裡面的內容如下:

&lt;pre class="c" name="code">
Dim objStartFile,objEndFile,objFSO,objFile,objFile2,oi
objStartFile =  Wscript.Arguments.Item(0)
objEndFile=Replace(objStartFile,".csv","") & ".xml"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile( objStartFile, 1)
Set objFile2 = objFSO.OpenTextFile(objEndFile, 2,true)

objFile2.writeLine "&lt;?xml version="&chr(34)&"1.0"&chr(34)&" encoding="&chr(34)&"UTF-8"&chr(34)&"?>"
objFile2.writeLine "&lt;list>"
oi=0
Do Until objFile.AtEndOfStream
    strLine = objFile.ReadLine
	If oi>0 Then
		objFile2.writeLine chr(9)&"&lt;my_rec>"
		myArray = Split(strLine,",")
		objFile2.writeLine chr(9)&chr(9)&"&lt;id>"&myArray(0)&"&lt;/id>"
		objFile2.writeLine chr(9)&chr(9)&"&lt;title>"&myArray(1)&"&lt;/title>"
		objFile2.writeLine chr(9)&chr(9)&"&lt;pic>"&myArray(2)&"&lt;/pic>"
		objFile2.writeLine chr(9)&"&lt;/my_rec>"
	End If
	oi=oi+1
Loop
objFile2.writeLine "&lt;/list>"
objFile.Close
objFile2.Close

2.把你要轉換的csv檔放到C槽底下,例如 test.csv

3.開啟DOS畫面,在C:\底下鍵入

&lt;pre class="c" name="code">csv2xml.vbs test.csv&lt;enter>

你要的test.xml就會出來了~

4
jay214
iT邦研究生 3 級 ‧ 5 年前

請善用 Google 大神查詢 csv to xml

馬上就跳出答案啦
http://csv2xml.sourceforge.net/

ithonda iT邦新手 5 級 ‧ 5 年前 檢舉

感謝 jay214 兄:您的回答對我也有很大的幫助。讚

我要發表回答

立即登入回答