将此问题发布给遇到相同问题的其他人。我的回答如下。
我创建了一个 AWS Lambda 方法,它接收一系列用于生成报告的查询参数。使用出色的 EPPlus 将报告数据保存在 Excel 文件中图书馆。当我在开发环境中运行代码时,它执行时没有问题。在我将代码部署到 AWS 并通过 URL 调用它之后,我得到以下异常:
The type initializer for 'Gdip' threw an exception
为什么在部署后会出现这种情况,但在开发环境中却能正常运行?
最佳答案
我能够确定的是,在尝试自动调整列宽大小以适应其中一个工作表中提供的数据时发生错误。 EPPlus 为一个范围提供了一个很有用的 AutoFitColumns
方法,该方法将根据范围中最宽的数据调整列的大小。一旦我将这行代码确定为异常的来源,一切就都说得通了。
我还没有证实这一点,但我假设 EPPlus 循环遍历范围内每个单元格中的文本并调用 .Net Graphics.MeasureString System.Drawing 命名空间中的方法来确定渲染文本的宽度。确定最宽的字符串后,相应地设置列宽。
问题是 GDI+ API 在 AWS lambda 环境中似乎不可用。我相信您可以将 libgdiplus
添加到您的 AWS Lambda 环境中(请参阅论坛讨论 here 和 here)。但是,我没有尝试更改我的配置,而是选择启用自动换行的默认列宽。
关于c# - 为什么 AWS Lambda 环境中的 EPPlus Excel 库会抛出 "The type initializer for ' Gdip' 抛出异常”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69967074/