我有一个宽大的合并单元格,显示了工作表的标题。我还有一个彩色的文本框,我想立即放在合并单元格中文本的右侧。
标题的宽度是可变的,所以我使用了一个非常宽的合并单元格。
sheet.Range["A2"].Value = title;
//Red Square
sheet.Shapes.Item("redSquare").Left += 0; // Position sheet.Range["A2"].TextWidth ???
我可以在Range上访问一个属性,它会给出合并单元格中文本的实际文本宽度(以像素为单位)吗?
答案 0 :(得分:3)
据我所知,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;
您可能需要在此处添加几个像素以确保文本框清除文本的结尾,但我认为它与您将获得的一样准确。