Как получить завернутый текст из ячейки Excel?

#c# #closedxml

Вопрос:

Я хочу знать, как получить завернутый текст из ячейки Excel с помощью ClosedXML.

(Версия ClosedXML составляет 0.95.4 и использует C#[Visualstudio 2017])

Например: данные ячейки excel (текст) следующие

 abc xyz  

Я хочу

 abc xyz  

(=завернутый текст), но я получаю abcxyz (=нет завернутого текста).

Я попробовал несколько методов (следующим образом), и результаты были одинаковыми.

 tgtcell.RichText tgtcell.GetString() tgtcell.Value.ToString()  

и т.д.

Кто-нибудь может сказать мне, как его получить?

Комментарии:

1. Почему он «завернут» ? Мне любопытно. Вы проверили, что между и (например, вы проверили свойство строки, которую вы получаете abc xyz Length

2. Он завернут, потому что это входной файл, представленный кем-то другим.

3. Я проверил длину веревки.

Ответ №1:

Теперь причина известна. В ячейке, куда был введен завернутый текст, был смешан развернутый текст. (Завернутый только путем указания формата стиля.) К сожалению, это была та самая ячейка, которую я тестировал, поэтому она выглядела нечитаемой.

Комментарии:

1. Чтобы закрыть этот вопрос, как только вы сможете, отметьте свой ответ как «принято». Это сообщит другим, что эта проблема решена.

Ответ №2:

(это скорее расширенный комментарий, чем окончательный ответ)

Я создал файл Excel, в котором ввел ABClt;Altgt; lt;Entergt;xyz ячейку A1. Это помещается ABC на одну строку и xyz под ней (все в одной ячейке). Затем я сохранил его и закрыл Excel.

Затем я открыл файл в Microsoft «Инструмент повышения производительности OpenXML» (который, к сожалению, был удален из «Microsoft.com» но все еще доступен на GitHub).

Если я посмотрю в разделе Общие строки файла, я увижу это как XML:

 lt;x:sst count="1" uniqueCount="1" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main"gt;  lt;x:sigt;  lt;x:tgt;ABCxyzlt;/x:tgt;  lt;/x:sigt; lt;/x:sstgt;  

Но, если я посмотрю на отраженный код (отраженный в C#), я увижу:

 public class GeneratedClass {  // Creates an SharedStringTable instance and adds its children.  public SharedStringTable GenerateSharedStringTable()  {  SharedStringTable sharedStringTable1 = new SharedStringTable(){ Count = (UInt32Value)1U, UniqueCount = (UInt32Value)1U };   SharedStringItem sharedStringItem1 = new SharedStringItem();  Text text1 = new Text();  text1.Text = "ABCnxyz";   sharedStringItem1.Append(text1);   sharedStringTable1.Append(sharedStringItem1);  return sharedStringTable1;  } }  

Таким образом, похоже, что Excel хранит символ новой строки Unix между строками в одной ячейке. Я не знаю, почему это не отображается в XML.

Я далек от эксперта по OpenXML, но я несколько раз успешно использовал его (в основном для создания файлов, а не для их анализа). Я никогда не использовал ClosedXML. Я понятия не имею, что означает Завернутый текст (и ваше объяснение не помогает). Но я вижу две строки текста в файле.

Я не знаю, поможет ли это вам — надеюсь, что да.