2016-12-27 8 views
0

У меня есть код, ниже которого я использую, чтобы программно сохранить таблицу Excel Excel Excel в XML. Этот код генерирует идеальный XML-документ со схемой, которая соответствует опции Excel Save As. Мой вопрос заключается в том, чтобы достичь этого, не используя сборки interop. Я просмотрел документацию Open XML, и я не могу найти параметр «Сохранить как», который позволит мне сохранить документ как xml. Это возможно? Любая помощь в C# или vb.net была бы оценена.Преобразование .XLSX или .XLSM в XML

Private Function ConvertExcelToXml(path As String, file As String) As Boolean 
    Dim returnValue as Boolean 
    returnValue = True 
    Try 
     Dim importfile As String = (path & file) + ".xlsm" 
     Dim exportfile As String = (path & file) + ".xml" 
     Dim app As New Application() 
     app.Workbooks.Open(importfile, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
          Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
          Type.Missing, Type.Missing, Type.Missing) 
     Dim data As String = String.Empty 

     app.ActiveWorkbook.XmlMaps(1).ExportXml(data) 'export the excel sheet xml to the string variable 
     System.IO.File.Delete(exportfile) 'delete the file if it already exists 
     System.IO.File.WriteAllText(exportfile, data) 'write the new file 
     app.Workbooks.Close() 
    Catch ex As Exception 
     returnValue = false 
    End Try 
    return returnValue 
End Function 

Спасибо, Chaos

+0

Когда вы говорите о преобразовании в XML, вы имеете в виду таблицы SpreadsheetML или XML? – strongbutgood

+0

Я точно не знаю, что это за форматы. Я пытаюсь получить XML-файл, который соответствует тому, что я получил бы, если бы использовал параметр «Сохранить как» в Excel. – Chaos

+0

, так как вы получаете карту xml (как она была получена «ActiveWorkbook.XmlMaps (1)') в первую очередь? Вы импортируете некоторый XML в excel или программно добавляете карту? – strongbutgood

ответ

0

Короче говоря, Interop является лучшим и, возможно, только из коробки решения, для чего вы хотите достичь.

Некоторые возможные выводы, которые могли бы работать, являются:

  1. Spire.XLS который можно найти here for free. Похоже, что он может поддерживать экспорт в XML с учетом схемы, но я бы не стал делать ставку на него, учитывая поверхностный просмотр.
  2. ClosedXML, обертка вокруг OpenXML, которая предоставляет больше приложений, таких как интерфейс к базовым данным. Из просмотра исходного кода и документации я не представляю ваши шансы на экспорт xml-карт.

Вы можете свернуть вас самостоятельно, используя OpenXML, чтобы получить содержимое XML-отображения и так далее. answer, как XML-карты работают в OpenXML, указывает на CustomXmlMappingsPart, если вы хотите использовать этот путь.

Моя рекомендация, однако, состоит в том, чтобы принять, что interop превосходит и плюсы идут с минусами.

+0

Спасибо. Я ценю ваше время на этом. – Chaos

Смежные вопросы