不支持 COM:AWS Lambda .net 3.1 中的 PlatformNotSupportedException

COM is not supported: PlatformNotSupportedException in AWS Lambda .net 3.1

我正在使用 AWS Lambda .NET 3.1 迁移解决方案。 该解决方案最初是在 .NET 4.8 FRAMEWORK 中构建的。 当我使用 visual studio AWS SDK 集成构建解决方案时,我没有遇到任何问题,但是当我在 lambda 控制台中对此进行测试时,我收到以下错误消息:

COM is not supported: PlatformNotSupportedException

at WeeklyDevReportGenerator.ParseDevopsCSVs.ParseCSV(String fileName)

    public void ParseCSV(string fileName)
    {
        xlApp = new Application();
        xlWorkbook = xlApp.Workbooks.Open(fileName);
        xlWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkbook.Sheets[1];
        xlRange = (Microsoft.Office.Interop.Excel.Range)xlWorksheet.UsedRange;

        rowCount = xlRange.Rows.Count;
        colCount = xlRange.Columns.Count;

        Read();
        CleanUp();

        week++;
    }

这次我很迷茫,我开始认为我可能需要将项目迁移到 aws 支持的 .NET 6.0。

还有其他解决方案吗?

您将需要重写与 Excel 工作簿交互的代码。

您的代码(间接)使用一种称为 COM 的技术与 Excel 的本地实例进行通信。您遇到的错误是说 Lambda 运行器不支持 COM,但更根本的问题是 lambda 运行器上没有 Excel。

最直接的方法是将您对 Excel 的使用替换为可以读写 Excel 文件的库。 ClosedXML、EPPlus、Aspose.Cells 和 NPOI 都是流行的选项。