2015-02-01 4 views
4

Я просмотрел большинство тем на этом форуме, касающихся похожих вопросов, но не нашел точно, что я ищу.Преобразование Excel (xlsx) в XML с C# и BizTalk

Я пытаюсь написать компонент конвейера для BizTalk 2013 R2, используя C#, чтобы просто преобразовать входящий файл Excel 2010.xlsx в его простое/базовое представление XML.

Я не хочу запускать какие-либо шаблоны против него или XLST преобразовать его или что-то в этом роде. Я просто хочу вернуть базовое XML-представление указанной электронной таблицы как есть.

Кажется, это должно быть очень простой задачей, но я не могу понять, как это сделать вообще.

Все, что я нашел, требует работы с DataTables и прокрутки строк и ячеек (через OpenXML) для вывода определенного XML-представления, которое более читаемо для человека, но это не то, что я хочу.

Я хочу фактическое представление Microsoft XML этой таблицы.

Любая помощь была бы принята с благодарностью.

+0

Распаковать и захватить XML-контент – ErikEJ

+0

Нет программного способа сделать это, кроме как разархивировать его? – Ritley572

+0

Используйте .zip-библиотеку, чтобы делать распаковку! – ErikEJ

ответ

2

ОК, выяснилось, без необходимости разархивировать файл.

При использовании SAX подхода к загрузке листа в OpenXmlReader найти здесь:

https://msdn.microsoft.com/en-us/library/office/gg575571(v=office.15).aspx

Вы можете использовать читатель, чтобы получить OuterXml вот так:

using (SpreadsheetDocument spreadSheetDocument = SpreadsheetDocument.Open(filepath, false)) 
{ 
    WorkbookPart wbPart = spreadSheetDocument.WorkbookPart; 

    OpenXmlReader reader = OpenXmlReader.Create(wbPart); 

    while (reader.Read()) 
    { 
     if (reader.ElementType == typeof(Sheet)) 
     { 
      Sheet sheet = (Sheet)reader.LoadCurrentElement(); 

      WorksheetPart wsPart = (WorksheetPart)(wbPart.GetPartById(sheet.Id)); 

      OpenXmlReader wsReader = OpenXmlReader.Create(wsPart); 
      while (wsReader.Read()) 
      { 
       if(wsReader.ElementType == typeof(Worksheet)) 
       { 
        Worksheet wsPartXml = (Worksheet)wsReader.LoadCurrentElement(); 
        Console.WriteLine(wsPartXml.OuterXml + "\n"); 
       } 
      } 
     } 
    } 
    Console.ReadKey(); 
} 
Смежные вопросы