Excel Interop获取单元格内文本的像素宽度

我有一个广泛的合并单元格显示该表的标题。 我也有一个彩色文本框,我想立即在合并的单元格中的文本的右侧。

标题的宽度是可变的,所以我使用了一个非常宽的合并单元格。

sheet.Range["A2"].Value = title; //Red Square sheet.Shapes.Item("redSquare").Left += 0; // Position sheet.Range["A2"].TextWidth ??? 

是否有一个属性,我可以访问范围,将给我的合并单元格中的文本的像素的实际文本宽度?

据我所知,Interop中没有任何东西可以告诉你像素的文本宽度,但是你可以用下面的方法来完成。 它似乎返回一个合理相似的Excel值根据相同的字体设置的列宽度的值。

 Excel.Range xlRange = sheet.get_Range("A2"); Excel.Font xlFont = xlRange.Font; string fontName = xlFont.Name; double fontSize = xlFont.Size; Font font = new Font(fontName, (float)fontSize); float width = Graphics.FromImage(new Bitmap(1, 1)).MeasureString(title, font).Width; 

您可能需要在这里和那里添加几个像素,以确保您的文本框清除了文本的末尾,但是我认为它与您将要获得的一样准确。