openxml как читать inlineStr с помощью OpenXmlReader

У меня есть следующий код:

public static void ReadExcelFileSAX(string filename) { using (SpreadsheetDocument myDoc = SpreadsheetDocument.Open(filename, true)) { WorkbookPart workbookPart = myDoc.WorkbookPart; WorksheetPart worksheetPart = workbookPart.WorksheetParts.First(); OpenXmlReader reader = OpenXmlReader.Create(worksheetPart); string text; while (reader.Read()) { if (reader.ElementType == typeof(CellValue)) { text = reader.GetText(); } } } } 

Этот код может читать любую ячейку, где тип данных является числом, но он не может читать inlineStr

Если посмотреть на инструмент XML с продукцией, я думаю, что код может читать следующий XML

 <x:cr="D2" t="n"> <x:v>328</x:v> </x:c> 

Но он не может прочитать этот (или я не знаю, как это сделать)

  <x:cr="F1" s="6" t="inlineStr"> <x:is> <x:t>T1</x:t> </x:is> </x:c> 

Любая помощь будет оценена.

благодаря

Ваш код выглядит так, чтобы он правильно читал значения, но некоторая дополнительная информация была бы полезной для выявления причины проблемы.

Я полагаю, вы можете попробовать проверить, является ли тип InlineString , но вы не можете просто использовать GetText() , потому что InlineString не является dervide из OpenXMlLeafTextElement .

Я еще не тестировал это, но я предлагаю вам попробовать:

 while (reader.Read()) { if (reader.ElementType == typeof(CellValue)) { text = reader.GetText(); } else if (reader.ElementType == typeof(InlineString)) //or instead of this, check type of its child node and use it inside this if statement { text = (reader.LoadCurrentElement() as InlineString).Text.Text; } } 

Или что-то похожее на это. Если у вас есть какие-либо проблемы с этим кодом, дайте мне знать, поэтому я исправлю это.

Некоторые ссылки:

  • Поля страницы Open XML SDK
  • Как применить шрифт и цвет текста в ячейках файла Excel с помощью openxml
  • Создайте форматированный SpreadSheet с DocumentFormat.OpenXML?
  • Excel и «нечитаемый контент» при создании электронной таблицы Open XML с помощью MemoryStream
  • В чем разница между <ct = "str"> и <c> <is> в Office Open XML?
  • Open XML SDK - динамически создавать строки
  • openxml sdk excel как анализировать и вычислять формулу
  • OpenXML SDK2.5 (Excel): как определить, содержит ли ячейка числовое значение?
  • Open XML SDK - сохранить файл шаблона (.xltx в .xlsx)
  • Как читать значение столбца столбца excel с использованием OpenXML в C #
  • Существующий API для чтения дат из файлов SpreadsheetML?
  • Interesting Posts
    Давайте будем гением компьютера.