c# - 使用在 Azure 应用服务上运行的 ASP.NET Core 将 Excel(xls、xlsx)文件转换为 PDF
问题描述
我不确定以前是否有人问过这个问题。我一直在从事一个项目,该项目需要使用在Azure App Service上运行的ASP.NET Core WebAPI将 Microsoft Office 文档转换为 PDF,而无需购买任何转换许可证。在这个讨论的帮助下,我完成了 doc 和 docx 部分。
然而,尽管 OpenXMLSDK-PowerTools 有一些“与 Excel 相关的”功能,但我无法将 Excel 文件(xls、xlsx)转换为 HTML(就像上面提到的讨论一样,我正在尝试将 Excel 转换为 HTML,然后再转换为 PDF)。下面的代码总是抱怨找不到表。
SpreadsheetDocument document = SpreadsheetDocument.Open(path, true);
htmlText = SmlToHtmlConverter.ConvertTableToHtml(document, new SmlToHtmlConverterSettings(), "Sheet1").ToString();
ArgumentException: Table not found
Parameter name: tableName
OpenXmlPowerTools.SmlDataRetriever.RetrieveTable(SpreadsheetDocument sDoc, string tableName) in SmlDataRetriever.cs
+
var styleXDoc = sDoc.WorkbookPart.WorkbookStylesPart.GetXDocument();
OpenXmlPowerTools.SmlToHtmlConverter.ConvertTableToHtml(SpreadsheetDocument sDoc, SmlToHtmlConverterSettings settings, string tableName) in SmlToHtmlConverter.cs
+
var rangeXml = SmlDataRetriever.RetrieveTable(sDoc, tableName);
MyProject.Controllers.FileUploadController.ProcessFile(string path, string name, FileType fileType) in FileUploadController.cs
+
htmlText = SmlToHtmlConverter.ConvertTableToHtml(document, new SmlToHtmlConverterSettings(), "Sheet1").ToString();
XFStdOfficeDocWebAPI.Controllers.FileUploadController.Index(List<IFormFile> files) in FileUploadController.cs
+
FileInfo htmlFileInfo = ProcessFile(filePath, fileName, fileType);
Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)
System.Threading.Tasks.ValueTask<TResult>.get_Result()
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
我被困在这里,不知道下一步该怎么做。任何意见/帮助将不胜感激!
解决方案
推荐阅读
- scala - 如何摆脱“找不到任何要链接的成员”错误或从 Heroku 构建 CLI 完全禁用它?
- clickhouse - 对 Clickhouse 中的多个列使用 NOT IN
- python - 如何在箱线图中突出显示某些记录
- java - CacheFlux:如何同步查找/ onCacheMissResume?
- ionic-framework - 设置离子 4 中默认选定选项的值
- facebook-graph-api - 自定义文本和图像的 Facebook 共享不适用于 fb.ui 打开图形
- javascript - 如何发出 PUT API HTTPS 请求 [reactJS]
- react-native - 运行反应本机项目时如何修复我的模拟器中的未知错误
- react-native - 无法在 Redux 中访问切片的 initialState,因此我不得不求助于手动设置状态属性
- if-statement - 从下拉列表中替换 Google 表格中的字符串