繁体   English   中英

为什么 AWS Lambda 环境中的 EPPlus Excel 库会抛出“'Gdip' 的类型初始值设定项引发异常”

[英]Why Does EPPlus Excel Library in AWS Lambda Environment Throw "The type initializer for 'Gdip' threw an exception"

为遇到相同问题的其他人发布此问题。 我的回答如下。

我创建了一个 AWS Lambda 方法,它接收一系列用于生成报告的查询参数。 报告数据使用优秀的EPPlus库保存在 Excel 文件中。 当我在开发环境中运行代码时,它可以毫无问题地执行。 在我将代码部署到 AWS 并通过 URL 调用它后,我收到以下异常:

“Gdip”的类型初始值设定项引发异常

为什么在部署后会发生这种情况,但在开发环境中却能正常运行?

我能够确定的是,在尝试自动调整列宽大小以适应其中一张工作表中提供的数据时会发生错误。 EPPlus 有助于为范围提供AutoFitColumns方法,该方法将根据范围内最宽的数据调整列的大小。 一旦我将这行代码确定为异常的来源,一切就都说得通了。

我尚未确认这一点,但我假设 EPPlus 循环遍历范围内每个单元格中的文本,并从 System.Drawing 命名空间调用 .Net Graphics.MeasureString方法来确定呈现文本的宽度。 一旦确定了最宽的字符串,就会相应地设置列宽。

问题是 GDI+ API 在 AWS lambda 环境中似乎不可用。 我相信您可以将libgdiplus添加到您的 AWS Lambda 环境中(请参阅此处此处的论坛讨论)。 但是,我没有尝试更改我的配置,而是选择启用自动换行的默认列宽。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM