Answer the question
In order to leave comments, you need to log in
How to convert xls and xlsx files to xml using VBScript without Excel installed?
It is necessary to convert Excel files to xml on the server without installing Excel, using VBScript.
Is there any free library? An example of its use?
Answer the question
In order to leave comments, you need to log in
Understood.
'Читаем данные из XLS файла
Dim connStr, objConn, getNames, inputFile
inputFile = test.xls
connStr = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & inputFile & ";Extended Properties=""Excel 12.0 xml;HDR=No;IMEX=2;"";"
Set objConn = CreateObject("ADODB.Connection")
'Open Connection
objConn.open connStr
'Define recordset and SQL query
'тут мы через SQL запрос вытаскиваем данные из ИМЕННЫХ ячеек экселевского файла. Всё это в массив
Set rs = objConn.execute("SELECT * FROM Job,Customer,Prod")
'присваиваем значения переменным из массива
DO WHILE NOT rs.EOF
Job = rs.Fields(0)
Customer = rs.Fields(1)
Prod = rs.Fields(2)
rs.MoveNext
Loop
'Close connection XLS and release objects
objConn.Close
Set rs = Nothing
Set objConn = Nothing
'формируем XML
Dim rootNode, subNode, xmlDoc, commentItem, Fragment
Set xmlDoc = CreateObject("Msxml2.DOMDocument")
'Создание объявления XML
xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml", "version='1.0' encoding='utf-8'"))
'Создание корневого элемента
Set rootNode = xmlDoc.CreateElement("JOBS")
xmlDoc.AppendChild rootNode
Set subNode = rootNode.appendChild(xmlDoc.createElement("Job"))
subNode.text = Job
Set subNode = rootNode.appendChild(xmlDoc.createElement("Customer"))
subNode.text = Customer
Set subNode = rootNode.appendChild(xmlDoc.createElement("Prod"))
subNode.text = Prod
'* -- написание XML-файла с отступом для более легкого использования независимо от того, какая программа использовалась для просмотра или редактирования файла -- *'
Dim rdr, wrt, oStream
Set rdr = CreateObject("MSXML2.SAXXMLReader")
Set wrt = CreateObject("MSXML2.MXXMLWriter")
Set oStream = CreateObject("ADODB.STREAM")
oStream.Open
oStream.Charset = "UTF-8"
wrt.Indent = True
wrt.Encoding = "UTF-8"
wrt.Output = oStream
Set rdr.ContentHandler = wrt
Set rdr.ErrorHandler = wrt
rdr.Parse xmlDoc
wrt.Flush
'запись xml файла
oStream.SaveToFile "Test.xml", 2
Set rdr = Nothing
Set wrt = Nothing
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question