2017-10-05 4 views
0

Je voudrais demander à quelles unités column.width renvoie-t-il lorsque vous utilisez Openxml? (Il est à l'UEM, mètres, cm ou ppp et comment puis-je obtenir son équivalent DPIComment obtenir l'équivalent DPI d'une colonne ajustable sans texte dans OpenXML

+1

Avez-vous vu cela? http://polymathprogrammer.com/2010/01/18/calculating-column-widths-in-excel-open-xml/ – wp78de

+0

Oui j'ai vu ça mais ça ne répond pas à ma question. Et j'ai un modèle qui n'a pas de mots que je suis censé cloner et la taille de la colonne du modèle peut être ajustée même sans qu'il y ait des mots alors comment puis-je calculer la taille de chaque colonne dans ce modèle? –

Répondre

0

De SpreadsheetOpenXmlFromScratch:

Notez que la largeur des chiffres dépend de la police et la taille de la police utilisé. Je vais utiliser la fonction MeasureString() de la classe Graphics pour mesurer la largeur de pixel.

Tout Vincent n'est basé sur le type de police et la taille. Vous devrez récupérer le type de police et la taille de la police pour parcourir les calculs

EDIT: pp 40-50

+0

Oui mais ma colonne n'a pas de mots donc cette formule n'est pas applicable non?En outre, si nous ajustons la largeur de la colonne dans mon modèle, la largeur de la colonne variera, alors comment puis-je obtenir la largeur de la colonne, car il n'y a pas de mots et peut être ajusté manuellement dans le modèle? –

0

Non, il utilise les mesures de police, pas le texte de la colonne. Un autre extrait:

Notez que la largeur des chiffres dépend de la police et de la taille de police utilisée. Je vais utiliser la fonction MeasureString() de la classe Graphics pour mesurer la largeur en pixels.

System.Drawing.Font drawfont = new System.Drawing.Font("Calibri", 11, FontStyle.Regular); 
// I just need a Graphics object. Any reasonable bitmap size will do. 
Graphics g = Graphics.FromImage(new Bitmap(256, 256)); 

Dim drawfont As New System.Drawing.Font("Calibri", 11, FontStyle.Regular) 
' I just need a Graphics object. Any reasonable bitmap size will do. 
Dim g As Graphics = Graphics.FromImage(New Bitmap(256, 256)) 

La police utilisée doit être la même que celle utilisée dans votre feuille de style. Sinon, vous mesureriez une police ou une taille de police, mais en utilisant une autre police ou taille de police pour afficher votre texte dans la cellule Excel. Je sais que c'est évident, mais c'est important de le dire ici. Plus précisément, il devrait être la police utilisée dans le style Normal. Ce mot est capitalisé pour une raison. Il fait référence au style de cellule nommé Normal (avec "Bon", "Mauvais" et "Neutre"). Obtenez votre geek Excel voisinage amical pour vous aider à trouver l'option de style de cellule dans Excel.

Certains de ses autres méthodes ne nécessitent texte quand il mesure en fait la largeur d'un flanquée zéro par deux traits de soulignement, puis soustrait la largeur des underscores pour obtenir une largeur plus précise, mais cela nécessite que le nom de la police et style.

La fonction MeasureString() a maintenant un petit problème. Cela provient de la documentation officielle: La méthode MeasureString est conçue pour être utilisée avec des chaînes individuelles et inclut un peu d'espace supplémentaire avant et après la chaîne pour autoriser les glyphes en surplomb. Ce que cela signifie est que le code suivant ne sera pas exactement vous donner la largeur de pixel de « 0 »:

fWidthOfZero = (double)g.MeasureString("0", drawfont).Width; 

fWidthOfZero = Convert.ToDouble(g.MeasureString("0", drawfont).Width) 

Donnez-lui un essai.

+0

malheureusement ne semble pas fonctionner. Mon image ne couvre que la moitié de la colonne –