@domanskiy

Как используя VBScript конвертировать xls и xlsx файлы в xml без установленного Excel?

Нужно на сервере конвертировать экселевские файлы в xml без установки Excel, используя VBScript.
Может есть какая бесплатная библиотека? Пример её использования?
  • Вопрос задан
  • 313 просмотров
Пригласить эксперта
Ответы на вопрос 1
@domanskiy Автор вопроса
Разобрался.
'Читаем данные из 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
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы