2017-10-04 5 views
0

Ma tâche en cours comprend la programmation génération de fichiers .xslx avec différentes fonctions comme l'affichage des lignes ou AutoFiltre sur la grille d'impression avec Excel 2010.quadrillages d'impression dans OpenXML Tableur

Cependant, je ne parviens pas à ajouter correctement les PrintOptions pour Quadrillage.
Selon le MSDN Dokumentation, PrintOptions est une feuille de la feuille de calcul, mais l'espace de noms DocumentFormat.OpenXml.Spreadsheet.WorkSheet n'inclut pas une fonction pour ajouter les PrintOptions, et l'utilisation de .Append() ou .AppendChild() entraînera une feuille de calcul corrompue.

Dim po = New PrintOptions With {.GridLines = True} 
sheetPart.Worksheet.Append(po) 

J'ai aussi utilisé la productivité OpenXML outil pour comparer mon propre créé Spreadsheet vs celui d'Excel 2010 et je constate que la seule différence entre ma feuille de calcul et Excelle est que le mien ont un espace de noms XML alors que ceux Excel ne fait pas.

Quelqu'un peut-il m'éclairer sur la manière correcte d'insérer les PrintOptions dans une feuille de calcul? Je passe des jours sur ces deux lignes maintenant.

Répondre

0

Apparemment, il y a un ordre dans lequel les éléments doivent être insérés.

Si vous avez un élément PageSetup dans votre feuille de calcul, cela doit être ajouté après les PrintOptions, sinon vous obtiendrez une feuille de calcul corrompu dans Office 2010.

Ceci est la bonne façon d'insérer si vous voulez une feuille de calcul en paysage, FitToWidth et quadrillage:

Dim po = New PrintOptions With {.GridLines = True} 
sheetPart.Worksheet.Append(po) 

Dim ps = New PageSetup With {.Orientation = OrientationValues.Landscape} 
Dim sp As New SheetProperties 
sp.PageSetupProperties = New PageSetupProperties With {.FitToPage = True} 
sheetPart.Worksheet.SheetProperties = sp 
ps.FitToWidth = CUInt(1) 
ps.FitToHeight = CUInt(0) 
sheetPart.Worksheet.Append(ps) 
0

De Vincent Tan de SpreadsheetOpenXmlFromScratch:

Dim po As New PrintOptions() 
po.HorizontalCentered = True 
po.VerticalCentered = True 
' print the row (1,2,3,...) and column (A,B,C,...) headings 
po.Headings = True 
' print the grid lines 
**po.GridLines = True 
' By default, GridLinesSet is true. 
' Only when both GridLines and GridLinesSet are true, then grid lines are printed.** 
' I don't know why there's an additional flip switch... 
po.GridLinesSet = True 
ws.Append(po) 

Votre code ne montre pas vous manipuler GridLinesSet = true

+0

Malheureusement ajouter « GridLinesSet = True » ne fonctionne pas, la feuille de travail devient encore corrompu. – Kyte