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

Azure App Service上ASP.NET Core无授权Excel转PDF遇问题求助

解决Excel转HTML时的“Table not found”错误

我来帮你搞定这个问题!你遇到的ArgumentException: Table not found错误,核心原因是用错了OpenXML PowerTools的方法:

你当前调用的ConvertTableToHtml方法,是专门用来转换Excel里手动定义的表格对象(也就是你在Excel里通过「插入→表格」创建的结构化表格),而不是整个工作表(Worksheet)。你传入的"Sheet1"是工作表的名称,不是表格对象的名称,所以工具找不到对应的表格,自然报错。

正确的解决方案:转换整个工作表到HTML

你需要改用ConvertWorksheetToHtml方法,这个方法可以直接把整个工作表转换成HTML,不需要依赖工作表里的表格对象。下面是修改后的完整代码示例:

using OpenXmlPowerTools;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;

// ... 你的其他代码逻辑

string htmlText = string.Empty;
// 以只读模式打开文档(不需要修改的话,只读更安全高效)
using (SpreadsheetDocument document = SpreadsheetDocument.Open(path, false))
{
    // 根据工作表名称获取对应的WorksheetPart
    WorksheetPart targetWorksheetPart = GetWorksheetPartByName(document, "Sheet1");
    if (targetWorksheetPart == null)
    {
        throw new ArgumentException("指定的工作表不存在,请检查名称是否正确");
    }

    // 配置转换设置(可以根据需求调整,比如是否包含样式、是否显示网格线等)
    var converterSettings = new SmlToHtmlConverterSettings();
    // 转换整个工作表为HTML
    htmlText = SmlToHtmlConverter.ConvertWorksheetToHtml(targetWorksheetPart, converterSettings).ToString();
}

// 辅助方法:通过工作表名称查找对应的WorksheetPart
private static WorksheetPart GetWorksheetPartByName(SpreadsheetDocument doc, string sheetName)
{
    foreach (Sheet sheet in doc.WorkbookPart.Workbook.Sheets)
    {
        if (string.Equals(sheet.Name, sheetName, StringComparison.OrdinalIgnoreCase))
        {
            return doc.WorkbookPart.GetPartById(sheet.Id) as WorksheetPart;
        }
    }
    return null;
}

额外注意事项

  • 文档打开模式:把Open方法的第二个参数改成false(只读模式),因为你只是读取转换,不需要修改文档,这样能避免不必要的文件锁问题。
  • 工作表名称校验:添加了工作表存在性校验,避免因为工作表名称拼写错误导致的问题。
  • 样式调整:转换后的HTML可能样式比较基础,你可以通过修改SmlToHtmlConverterSettings或者后续给HTML添加自定义CSS,来优化表格的边框、字体、宽度等样式,方便后续转PDF时的格式还原。
  • 后续转PDF:你之前计划的「HTML转PDF」路线是可行的,推荐使用免费的库比如DinkToPdf或者iTextSharp(注意版本授权),转换时记得引入HTML里的样式,确保PDF格式和HTML一致。

内容的提问来源于stack exchange,提问作者Samuel Leung

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:52:55