1

シートのタイトルを示す広い結合セルがあります。結合されたセルのテキストのすぐ右に配置したい色付きのテキストボックスもあります。

タイトルの幅は可変なので、非常に幅の広い結合セルを使用しました。

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

結合されたセル内のテキストの実際のテキスト幅をピクセル単位で取得できる、Range でアクセスできるプロパティはありますか?

4

1 に答える 1

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;

テキストボックスがテキストの終わりを確実にクリアするために、あちこちに数ピクセルを追加する必要があるかもしれませんが、それはあなたが得ようとしているのと同じくらい正確だと思います.

于 2012-11-29T21:42:03.290 に答える