Я пытаюсь получить части верхнего / нижнего колонтитула из документа Excel, чтобы я мог что-то сделать с их содержимым, однако я не могу ничего получить от них.
Я думал, что это будет довольнопросто ... Рассмотрим этот код:
using (SpreadsheetDocument spreadsheet = SpreadsheetDocument.Open(filePath, true))
{
var headers = spreadsheet.GetPartsOfType<HeaderPart>().ToList();
foreach (var header in headers)
{
//do something
}
}
Даже если файл содержит заголовок, заголовки всегда будут пустыми.Я пробовал сверлить в workbook -> worksheets -> etc
, но ничего не получаю.Мой тестирующий файл Excel определенно имеет заголовок (заголовки ужасны в Excel!).
К сожалению, API для Excel в openxml хуже, так как в docx вы можете получить заголовок, вызвав:
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(filePath, true))
{
MainDocumentPart documentPart = wordDoc.MainDocumentPart;
var headerParts = wordDoc.MainDocumentPart.HeaderParts.ToList();
foreach (var headerPart in headerParts)
{
//do something
}
}
Я видел, как некоторые люди в Google говорят, что я должен запросить потомков листа (код из эта ссылка ):
HeaderFooter hf = ws.Descendants<HeaderFooter>().FirstOrDefault();
if (hf != null)
{
//here you can add your code
//I just try to append here for demo
hf = new HeaderFooter();
ws.AppendChild<HeaderFooter>(hf);
}
Но я не вижу никакого способазапрашивая книгу / лист / что-нибудь с .Descendants
и, очевидно, ни один из примеров кода в Google не показывает, как они получили ws
?.
Есть идеи?Спасибо