Быстрое преобразование XML к [закрытому] Excel

9
задан Bajji 13 April 2010 в 19:40
поделиться

3 ответа

Если вы используете Excel 2007 и хотите использовать XSLT, лучше всего, вероятно, будет использовать функции EXPath Zip Module для изменения существующего файла Excel .xslx.

Однако я предпочитаю использовать небольшой макрос Excel VBA.

Я включил ниже образец кода для процедуры VBA под названием 'load' - в этом образце используется модель XML DOM, поэтому все 112 тыс. Строк вашего XML будут сначала загружены в память, но если производительность не является проблемой, проще чем альтернатива SAX.

Вам потребуется изменить xpathToExtractRow в соответствии с входной структурой XML. Также предполагается, что непосредственные дочерние узлы элемента строки XML содержат данные ячеек, которые вы хотите импортировать как текстовые узлы, в противном случае вам нужно будет использовать вызов SelectNode для получения требуемых данных. .

Private dom As DOMDocument60

Public Sub load ()

Dim nodeList As IXMLDOMNodeList
Dim nodeRow As IXMLDOMNode
Dim nodeCell As IXMLDOMNode
Dim rowCount As Integer
Dim cellCount As Integer
Dim rowRange As Range
Dim cellRange As Range
Dim sheet As Worksheet

Dim xpathToExtractRow As String
xpathToExtractRow = "/feed/row"

Set dom = New DOMDocument60
dom.load ("c:\test\source.xml")
Set sheet = ActiveSheet
Set nodeList = dom.SelectNodes(xpathToExtractRow)

rowCount = 0
For Each nodeRow In nodeList
    rowCount = rowCount + 1
    cellCount = 0
    For Each nodeCell In nodeRow.ChildNodes
        cellCount = cellCount + 1
        Set cellRange = sheet.Cells(rowCount, cellCount)
        cellRange.Value = nodeCell.Text
    Next nodeCell
Next nodeRow

End Sub

Пример XML-ввода:

<?xml version="1.0" encoding="utf-8"?>
<feed>
  <row>
    <firstname>joe</firstname>
    <lastname>smith</lastname>
    <country>jamaica</country>
  </row>
  <row>
    <firstname>bill</firstname>
    <lastname>coots</lastname>
    <country>uk</country>
  </row>
</feed>
6
ответ дан 4 December 2019 в 06:49
поделиться

Почему так сложно? Просто откройте файл с помощью File-> Open выберите xml и загрузите его. Посмотри, что будет.

26
ответ дан 4 December 2019 в 06:49
поделиться

Возможно, просто прочтите XML на каком-нибудь языке высокого уровня (JAVA, C # и т. Д. Все имеют такие возможности), запишите файл как файл .csv , а затем импортируйте его в Excel с помощью функции «Данные-> Импорт».

Могут быть способы получше, но это один простой способ.

0
ответ дан 4 December 2019 в 06:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: