You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下执行C# SpreadsheetGear AutoFit报错System.Drawing.Common不支持

解决方案

方法1:启用System.Drawing.Common跨平台支持(仅适用于.NET 6及更早版本)

报错核心原因是AutoFit()依赖System.Drawing.Common库,该库在.NET Core/.NET 5+的非Windows平台默认禁用。对于.NET 6及更早版本,可通过项目配置重新启用:

在你的项目文件(.csproj)中添加以下配置:

<PropertyGroup>
  <!-- 指定目标Linux运行时 -->
  <RuntimeIdentifier>linux-x64</RuntimeIdentifier>
  <!-- 启用Unix平台的System.Drawing支持 -->
  <System.Drawing.EnableUnixSupport>true</System.Drawing.EnableUnixSupport>
</PropertyGroup>

注意:.NET 7及以上版本已彻底移除该配置选项,此方法不再适用。

方法2:手动实现列宽自适应(跨平台通用)

绕过依赖Windows GDI+的AutoFit(),手动计算每列最大内容宽度并设置列宽:

using SpreadsheetGear;

// 假设worksheet是你的IWorksheet实例
IRange usedRange = worksheet.UsedRange;

// 遍历每一列
for (int colIndex = usedRange.Column; colIndex <= usedRange.Column + usedRange.ColumnCount - 1; colIndex++)
{
    double maxColumnWidth = 8.43; // 默认列宽
    IRange column = worksheet.Columns[colIndex];
    IRange columnCells = usedRange.Columns[colIndex - usedRange.Column + 1];

    foreach (IRange cell in columnCells)
    {
        if (cell.Value == null) continue;
        
        string cellText = cell.Text;
        if (string.IsNullOrWhiteSpace(cellText)) continue;

        // 近似计算文本宽度:以常规11号字体为例,每个字符约占1.2个宽度单位,加边距
        double calculatedWidth = cellText.Length * 1.2 + 2;
        if (calculatedWidth > maxColumnWidth)
        {
            maxColumnWidth = calculatedWidth;
        }
    }

    // 设置最终列宽
    column.Width = maxColumnWidth;
}

若需更精确的宽度计算,可引入跨平台字体渲染库(如SixLabors.Fonts),加载对应字体后测量文本实际像素宽度,再转换为SpreadsheetGear的列宽单位(1单位≈1/72英寸)。

方法3:尝试SpreadsheetGear的SkiaSharp兼容配置(针对2023版本)

部分新版本SpreadsheetGear支持用SkiaSharp替代System.Drawing作为渲染后端,可尝试以下步骤:

  1. 在项目中安装SkiaSharp NuGet包:
dotnet add package SkiaSharp
  1. 初始化SpreadsheetGear时指定使用SkiaSharp(需确认API支持):
// 检查SpreadsheetGear是否提供相关配置选项
SpreadsheetGear.Configuration.SetDefaultGraphicsEngine(typeof(SkiaSharpGraphicsEngine));

注意:此功能需确认你的SpreadsheetGear 2023版本是否支持,若官方文档未提及,可联系技术支持确认。

内容的提问来源于stack exchange,提问作者Robin Jackson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 13:32:25