簡體   English   中英

如何在OpenXML中獲得與無文本的可調列等效的DPI

[英]How to obtain DPI equivalent of an adjustable column with no text in OpenXML

我想問一下使用Openxml時column.width返回什么單位? (是以EMU,米,cm或dpi為單位,我如何獲得等效的DPI?

SpreadsheetOpenXmlFromScratch

請注意,數字的寬度取決於所使用的字體和字體大小。 我將使用Graphics類的MeasureString()函數來測量像素寬度。

Vincent所做的一切都基於字體類型和大小。 您將必須檢索字體類型和字體大小才能進行計算。

編輯:pp 40-50

不,它使用的是字體尺寸,而不是列文本。 另一個摘錄:

請注意,數字的寬度取決於所使用的字體和字體大小。 我將使用Graphics類的MeasureString()函數來測量像素寬度。

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))

使用的字體應與樣式表中使用的字體相同。 否則,您將測量一種字體或字體大小,但使用另一種字體或字體大小在Excel單元格中呈現實際文本。 我知道這很明顯,但是在這里聲明很重要。

具體來說,它應該是“ 普通”樣式中使用的字體。 這個詞大寫是有原因的。 它指的是名為“ 正常” (以及“良好”,“不良”和“中性”)的單元格樣式。 獲取友好的鄰域Excel怪胎,以幫助您在Excel中找到單元格樣式選項。

當他實際測量兩個下划線旁邊的零的寬度時,他的某些其他方法確實需要文本,然后減去下划線的寬度以獲得更准確的寬度,但這僅需要字體名稱和樣式。

現在,MeasureString()函數有一個小問題。 這來自官方文檔: MeasureString方法設計用於單個字符串,並且在字符串前后包含少量多余空間,以允許懸空字形。 這意味着以下代碼不會完全為您提供像素寬度“ 0”:

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

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

試試看。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM