J'ai besoin d'aide pour modifier l'orientation des documents Excel 2007 en paysage. Je n'ai trouvé aucune information utile à ce sujet. J'utilise OpenXML SDK pour cela. La seule chose que j'ai trouvé: quand je crée une nouvelle feuille de travail, je devrais définir PageSetup() {Orientation = OrientationValue.Landscape}; Mais cela n'aide pas. Quelqu'un peut-il aider avec ce problème? Merci.Comment modifier l'orientation du document Excel vers le paysage par OpenXML sdk
Répondre
Vous êtes sur la bonne voie avec OrientationValue.Landscape. Vous avez juste besoin de boucle à travers toutes les feuilles de calcul et définissez l'attribut d'orientation sur l'élément PageSetup afin de mettre toutes les feuilles de paysage:
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();
}
Le modèle que j'utilise pour manipuler des documents est d'abord Excel ouvert et créer un document vierge et enregistrez-le. J'utilise ensuite mon code pour ouvrir ce document et faire le travail dont j'ai besoin. De cette façon, je ne dois pas être dérangé avec la création des éléments et s'assurer que les choses sont au bon endroit. Le code que j'utilise pour y parvenir est ici:
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();
}
}
J'ouvre donc ici le fichier du lecteur dans un flux de mémoire je peux effectuer toutes les modifications dans la mémoire. Je passe ensuite ce document dans la méthode SetLandscape et il définit la propriété landscape sur les trois feuilles (3 feuilles étant donné que c'est le document par défaut d'un document excel 2007). Je puis enregistrer mes modifications et retourner le flux en tant que tableau d'octets. Je fais cela pour que le fichier puisse être téléchargé. Je vous recommande de créer un fichier vide et l'ouvrir dans la mémoire comme ceci au lieu d'essayer manuellement de construire le fichier à partir de zéro. Cela expliquerait pourquoi vous obtenez tant de pointeurs NULL.
je résous avec:
PageSetup pageSetup = worksheetPart.Worksheet.Descendants<PageSetup>().FirstOrDefault();
if (pageSetup == null)
{
pageSetup = new PageSetup();
pageSetup.Orientation = OrientationValues.Landscape;
worksheetPart.Worksheet.AppendChild(pageSetup);
}
Je préfère de loin cette option. comment utiliser le format SDK et OpenXML est beaucoup mieux que de construire des choses à partir d'un modèle, à long terme. – ps2goat
- 1. Création de document Excel avec OpenXml sdk 2.0
- 2. OpenXML: Lire du texte entre deux champs de document en utilisant OpenXML SDK
- 3. Kits de démarrage OpenXML SDK Spreadsheet
- 4. Excel "Actualiser tout" avec OpenXML
- 5. Insérer du code HTML dans un document Word OpenXML (.Net)
- 6. OpenXML 2 SDK - Document Word - Créer une liste à puces par programme
- 7. Utilisation de TDD avec OpenXml-SDK
- 8. .NET OpenXML SDK 2 RunProperties sont Null
- 9. Modifier facilement des feuilles de calcul Excel avec le SDK
- 10. en utilisant une feuille Excel comme modèle par rapport à un modèle Excel « réel » dans OpenXML
- 11. Reporting Services - exporter vers Excel en format paysage?
- 12. Création de commentaires de cellules dans une feuille de calcul Excel avec OpenXML SDK
- 13. Remplacer l'image dans le document Word en utilisant OpenXML
- 14. Comment remplacer un texte de paragraphe en utilisant OpenXML Sdk
- 15. Comment créer Hypelink dans Excel en utilisant openxml en Java
- 16. Comment lire des données à partir d'une feuille de calcul à l'aide du SDK OpenXML Format?
- 17. OpenXML SDK: Texte mis à jour en headerPart pas sauvées
- 18. Modifier la version du document Word par programme?
- 19. Où est la liste des styles de format définis pour Excel en utilisant OpenXML sdk
- 20. Accéder au classeur Excel actif en utilisant OpenXML et C#
- 21. WPF vers XPS en orientation paysage
- 22. Modifier la taille Page Wor document en utilisant Open XML SDK 2.0
- 23. Version du document Excel dans le complément VSTO
- 24. Modifier un objet Excel incorporé dans un document Word
- 25. Modifier les grandes lignes du document dynamique
- 26. iPhone SDK: modifier par programme IBAction
- 27. Rotation de MPMoviePlayerController en paysage - iPhone SDK
- 28. Enregistrement d'un document OpenXML (Word) généré à partir d'un modèle
- 29. Insérer une chaîne XML dans un document openXML
- 30. Élimination de la mise en cache du document Excel
Salut amurra! Merci pour votre réponse! Je l'ai essayé et il tombe avec NullReferenceException "La référence d'objet n'est pas définie sur une instance d'un objet." sur la ligne pageSetup.Orientation = OrientationValues.Landscape; Pourquoi est-ce arrivé? Merci. – Paul
Ajout d'un chèque pour null autour de la page Configuration. La seule chose est que je crois que l'élément PageSetup est requis pour être un descendant de Worksheet donc il ne devrait jamais jeter un pointeur nul, mais pour être sûr le cas si la vérification est ajoutée. J'ai essayé le code dans mon projet et il a mis l'orientation au paysage. Si vous avez toujours des problèmes, postez le code que vous utilisez et je peux le regarder. – amurra
J'ai essayé votre solution et cela ne fonctionne pas. = (Après l'appel de la méthode SetLandscape() je ne peux pas ouvrir mon document, il dit que le document est cassé, pourquoi ça arrive Bug avec le PageSetup nul J'ai corrigé en ajoutant le code new PageSetup() lors de la création d'une nouvelle feuille de calcul. afficher l'extrait de code complet pour la création d'un document Excel et le changement d'orientation Merci – Paul