DioDocs for Excel
DioDocs for Excel
デジタル幅の測定
機能 > ワークシート > 範囲の操作 > デジタル幅の測定

列幅をピクセル単位で取得または設定する場合、DioDocs for ExcelとMicrosoft Excelはどちらも列幅を文字単位で格納するため、結果が異なる場合があります。この問題を解決するには、DioDocs for Excelは1桁の正確なピクセル値を計算するためのデジタル幅の測定をサポートしています。

IGraphicsInfoインタフェースを使用して、1桁の正確なピクセル値を計算することができます。IGraphicsInfoインタフェースのGetDigitWidthメソッドを使用して、フォントファミリ名、フォントサイズ、フォントスタイルなどのさまざまなフォント属性に基づいてテキスト(または文字)を測定できます。DioDocs for ExcelのAPIは、Windows FormsとWPFなどのGUIフレームワークもサポートしています。

ピクセル値を計算し、Excelで列幅を正しくエクスポートする方法については、次のサンプルコードを参照してください。

C#
コードのコピー
class FakeGraphicsInfo : IGraphicsInfo
{
    public double Width { get; set; }
    public int GetDigitWidthCount { get; set; }
    public double GetDigitWidth(TextFormatInfo textFormat)
    {
        GetDigitWidthCount++;
        return Width;
    }
}

private void Form1_Load(object sender, EventArgs e)
{
    var workbook = new Workbook();
    var theme = new Theme("custom");
    theme.ThemeFontScheme.Major[FontLanguageIndex.Latin].Name = "宋体";
    theme.ThemeFontScheme.Minor[FontLanguageIndex.Latin].Name = "宋体";
    workbook.Theme = theme;
    var sheet = workbook.ActiveSheet;
    var fakeGraphicsInfo = new FakeGraphicsInfo { Width = 8 };
    workbook.GraphicsInfo = fakeGraphicsInfo;
    sheet.StandardWidthInPixel = 20;
    sheet.Columns[0].ColumnWidthInPixel = 20;
    sheet.Range[1, 1].Value = "abc";
    workbook.Save("ColumnWidth.xlsx");
}

注意: