Мне нужна помощь в изменении ориентации документа Excel 2007 на ландшафт. Я не нашел полезной информации об этом. Для этого я использую OpenXML SDK. Единственное, что я нашел: когда я создаю новый рабочий лист, я должен установить PageSetup() {Orientation = OrientationValue.Landscape}; Но это не помогает. Может ли кто-нибудь помочь в решении этой проблемы? Спасибо.Как изменить ориентацию документа Excel на ландшафт OpenXML sdk
ответ
Вы находитесь на правильном пути с OrientationValue.Landscape. Вам просто нужно перебрать все рабочие листы и установить атрибут ориентации на элемент настройки страницы для того, чтобы установить все рабочие листы пейзаж:
public static void SetLandscape(SpreadsheetDocument document)
{
WorkbookPart workbookPart = document.WorkbookPart;
IEnumerable<string> worksheetIds = workbookPart.Workbook.Descendants<Sheet>().Select(w => w.Id.Value);
WorksheetPart worksheetPart;
foreach (string worksheetId in worksheetIds)
{
worksheetPart = ((WorksheetPart)workbookPart.GetPartById(worksheetId));
PageSetup pageSetup = worksheetPart.Worksheet.Descendants<PageSetup>().FirstOrDefault();
if (pageSetup != null)
{
pageSetup.Orientation = OrientationValues.Landscape;
}
worksheetPart.Worksheet.Save();
}
workbookPart.Workbook.Save();
}
Шаблон я использую для управления документами является первым открытым первенствует и создать пустой документ и сохранить его. Затем я использую свой код, чтобы открыть этот документ и выполнить любую работу, которая мне нужна. Таким образом, мне не нужно беспокоиться о создании элементов и обеспечении того, чтобы все было в нужном месте. Код я использую для достижения этой цели здесь:
public byte[] Export(string pathToExcelFile)
{
// Open the file from the drive
byte[] byteArray = File.ReadAllBytes(pathToExcelFile)
using (MemoryStream stream = new MemoryStream())
{
stream.Write(byteArray, 0, (int)byteArray.Length);
using (SpreadsheetDocument spreadsheetDoc = SpreadsheetDocument.Open(stream, true))
{
// Do all work on excel doc here
SetLandscape(spreadsheetDoc);
// Save all the changes
}
return stream.ToArray();
}
}
Так вот я открываю файл с диска в поток памяти, чтобы я мог выполнять все изменения в памяти. Затем я передаю этот документ в методе SetLandscape, и он установит свойство landscape на всех трех листах (3 листа, поскольку это значение по умолчанию для чистого документа excel 2007). Затем я сохраняю свои изменения и возвращаю поток в виде байтового массива. Я делаю это, чтобы файл можно было загрузить. Я рекомендую вам создать пустой файл и открыть его в памяти, как это, вместо того, чтобы вручную пытаться создать файл с нуля. Это объясняет, почему вы получаете так много нулевых указателей.
решаю с:
PageSetup pageSetup = worksheetPart.Worksheet.Descendants<PageSetup>().FirstOrDefault();
if (pageSetup == null)
{
pageSetup = new PageSetup();
pageSetup.Orientation = OrientationValues.Landscape;
worksheetPart.Worksheet.AppendChild(pageSetup);
}
Я предпочитаю этот вариант. как использовать формат SDK и OpenXML намного лучше, чем строить вещи из шаблона в конечном итоге. – ps2goat
- 1. Как изменить ориентацию UIViewController на ландшафт программно?
- 2. OpenXML SDK - Excel Диапазоны
- 3. Как изменить ориентацию на ландшафт только в IOS 6?
- 4. Как изменить ориентацию на ландшафт справа, если устройство является iPad
- 5. Создание документа Excel с помощью OpenXml sdk 2.0
- 6. Изменить ориентацию бумаги для участков R на ландшафт
- 7. Заблокировать ориентацию приложения на ландшафт в Qt
- 8. OpenXML: прочитайте текст между двумя полями документа, используя OpenXML SDK
- 9. OpenXML SDK: сделать Excel пересчитанной формулой
- 10. OpenXML SDK Inject VBA в excel workbook
- 11. OpenXML SDK - объединить несколько файлов Excel
- 12. Android - Сенсорный ландшафт позволяет любую ориентацию
- 13. Внедрение документа OpenXML в другой документ OpenXml
- 14. Как скрыть линии сетки excel, используя OpenXML SDK
- 15. Использование TDD с OpenXml-SDK
- 16. Заблокировать ориентацию приложения только на ландшафт и только датчик
- 17. OpenXml SDK - Повторное использование изображений
- 18. openxml sdk excel как анализировать и вычислять формулу
- 19. Изменить ориентацию экрана - Android 3.2 на VirtualBox
- 20. Как разбить документ в OpenXML SDK
- 21. iOS: Как изменить ориентацию UICollectionViewCell?
- 22. Альтернативы MS OpenXML SDK
- 23. Установите ориентацию устройства как ландшафт только для iPad
- 24. OpenXML SDK: как определить тип данных ячейки?
- 25. Как изменить ориентацию видео
- 26. Как изменить ориентацию iframe
- 27. Как изменить ориентацию Softkeyboard
- 28. Mocking OpenXML SDK ТабличныйДокумент
- 29. Как изменить ориентацию RecyclerView?
- 30. Библиотека OpenXML save excel file
Hi amurra! Спасибо за ответ! Я попробовал это, и он падает с NullReferenceException «Ссылка на объект не установлена в экземпляр объекта». на строке pageSetup.Orientation = OrientationValues.Landscape; Почему это произошло? Спасибо. – Paul
Забыл, чтобы добавить чек на null вокруг страницы. Единственное, что я считаю, что элемент PageSetup должен быть потомком Worksheet, поэтому он никогда не должен бросать нулевой указатель, но быть безопасным, если будет добавлена проверка. Я пробовал код в своем проекте и настраивал ориентацию на пейзаж. Если у вас все еще есть проблемы, отправьте код, который вы используете, и я могу посмотреть на него. – amurra
Я пробовал ваше решение, и оно не работает. = (После вызова метода SetLandscape() я не могу открыть свой документ. Он говорит, что этот документ сломан. Почему это происходит? Ошибка с нулевым значением PageSetup Я исправил добавление кода new PageSetup() при создании нового листка. опубликовать полный фрагмент кода для создания документа Excel и изменения ориентации. Спасибо. – Paul