#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. Я понятия не имею, что означает Завернутый текст (и ваше объяснение не помогает). Но я вижу две строки текста в файле.
Я не знаю, поможет ли это вам — надеюсь, что да.