В поисках замороженных стекол с EPPlus - PullRequest
1 голос
/ 19 июня 2019

Можно ли найти замороженные стекла с помощью EPPlus? Например, в электронной таблице, в которой я работаю, любая строка выше 6 заморожена, а любой столбец до D заморожен. Есть ли способ, которым я могу обнаружить их в данном листе?

Я знаю, что в EPPlus есть опции для замораживания панелей с учетом строк и столбцов. Просматривая исходный код, я вижу, что этот метод находится в ExcelWorksheetView.cs. Кроме того, строка, которая фактически устанавливает состояние в замороженное состояние: paneNode.SetAttribute("state", "frozen");, где paneNode - это XmlElement.

Учитывая эту информацию, я использовал отладчик Visual Studio для поиска по рабочему листу, пытаясь найти релевантную информацию о замороженном состоянии, но мне пока не удалось найти какую-либо информацию. Я также проверил, было ли это записано в отдельных ячейках, но опять не повезло.

Я довольно новичок в этой библиотеке и читаю файлы Excel в целом, и надеялся, что кто-то более опытный сможет помочь мне определить, как именно я могу обнаружить замороженные панели в данном рабочем листе.

1 Ответ

1 голос
/ 19 июня 2019

Я нашел решение, которое работает для меня. Состояние главной панели можно найти в worksheet.View.TopNode.InnerXml. Кроме того, то же самое можно сказать о значениях xSplit и ySplit.

Чтобы достичь этих значений:

var field = worksheet.View.GetType().GetProperty("TopNode", BindingFlags.NonPublic | BindingFlags.Instance);
XmlNode node = (XmlNode) field.GetValue(worksheet.View);
var pane = node.SelectSingleNode("//*[local-name()='pane']");

var state = pane.Attributes?["state"]?.Value;
var xSplit= pane.Attributes?["xSplit"]?.Value;
var ySplit= pane.Attributes?["ySplit"]?.Value;

Оттуда я могу проверить состояние панели, а также увидеть позиции X и Y для разделения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...