jim*_*les 3 .net c# excel office-interop
我有一个宽的合并单元格,显示工作表的标题。我还有一个彩色文本框,我想将其立即放置在合并单元格中文本的右侧。
标题的宽度是可变的,因此我使用了非常宽的合并单元格。
sheet.Range["A2"].Value = title;
//Red Square
sheet.Shapes.Item("redSquare").Left += 0; // Position sheet.Range["A2"].TextWidth ???
Run Code Online (Sandbox Code Playgroud)
我可以在 Range 上访问一个属性,它可以为我提供合并单元格中文本的实际文本宽度(以像素为单位)吗?
据我所知,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;
Run Code Online (Sandbox Code Playgroud)
您可能需要在这里和那里添加一些像素,以确保您的文本框清除文本的末尾,但我认为它与您将获得的一样准确。
归档时间: |
|
查看次数: |
2480 次 |
最近记录: |