[研究]ASP.NET,WebForm,使用 OfficeConverter 1.7.10 轉換 .ods 和 .xlsx
2024-10-28
環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19
********************************************************************************
相依套件很多
WebApplication1
正在安裝:
Newtonsoft.Json.13.0.3
OpenMcdf.2.3.1
RtfPipe.2.0.7677.4303
System.Buffers.4.5.1
System.Drawing.Common.8.0.8
System.Numerics.Vectors.4.5.0
System.Runtime.CompilerServices.Unsafe.6.0.0
System.Memory.4.5.5
Microsoft.Extensions.Primitives.8.0.0
Microsoft.IO.RecyclableMemoryStream.3.0.1
Microsoft.Maui.Graphics.8.0.82
System.Diagnostics.DiagnosticSource.8.0.0
System.Security.Cryptography.Pkcs.8.0.0
System.Security.Principal.Windows.5.0.0
System.Security.AccessControl.5.0.0
Microsoft.Win32.Registry.5.0.0
System.Threading.Tasks.Extensions.4.5.4
Microsoft.Bcl.AsyncInterfaces.8.0.0
Microsoft.Extensions.DependencyInjection.Abstractions.8.0.0
Microsoft.Extensions.DependencyInjection.8.0.0
Microsoft.Extensions.Logging.Abstractions.8.0.0
SharpZipLib.1.4.2
System.ValueTuple.4.5.0
Microsoft.Extensions.Options.8.0.0
Microsoft.Extensions.Logging.8.0.0
UTF.Unknown.2.5.1
MsgReader.5.6.5
PasswordProtectedChecker.1.3.10
OfficeConverter.1.7.9
********************************************************************************
WebApplication1
更新:
MsgReader.5.6.5 -> MsgReader.5.6.6
Microsoft.Extensions.Logging.8.0.0 -> Microsoft.Extensions.Logging.8.0.1
Microsoft.Extensions.Options.8.0.0 -> Microsoft.Extensions.Options.8.0.2
Microsoft.Extensions.Logging.Abstractions.8.0.0 -> Microsoft.Extensions.Logging.Abstractions.8.0.2
Microsoft.Extensions.DependencyInjection.8.0.0 -> Microsoft.Extensions.DependencyInjection.8.0.1
Microsoft.Extensions.DependencyInjection.Abstractions.8.0.0 -> Microsoft.Extensions.DependencyInjection.Abstractions.8.0.2
System.Security.AccessControl.5.0.0 -> System.Security.AccessControl.6.0.1
System.Security.Cryptography.Pkcs.8.0.0 -> System.Security.Cryptography.Pkcs.8.0.1
System.Diagnostics.DiagnosticSource.8.0.0 -> System.Diagnostics.DiagnosticSource.8.0.1
Microsoft.Maui.Graphics.8.0.82 -> Microsoft.Maui.Graphics.8.0.92
System.Drawing.Common.8.0.8 -> System.Drawing.Common.8.0.10
Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1 -> Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0
********************************************************************************
安裝了一堆SDK API檔案
- \CLI\x64
- \CLI\x86
- \CLI\x64\cli_basetypes.dll
- \CLI\x64\cli_cppuhelper.dll
- \CLI\x64\cli_oootypes.dll
- \CLI\x64\cli_ure.dll
- \CLI\x64\cli_uretypes.dll
- \CLI\x86\cli_basetypes.dll
- \CLI\x86\cli_cppuhelper.dll
- \CLI\x86\cli_oootypes.dll
- \CLI\x86\cli_ure.dll
- \CLI\x86\cli_uretypes.dll
********************************************************************************
Default.aspx.cs
using System;
namespace WebApplication1
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
using (var converter = new OfficeConverter.Converter())
{
converter.Convert(@"C:\temp\2.ods", @"C:\temp\2.xlsx");
converter.Convert(@"C:\temp\2.xlsx", @"C:\temp\3.ods");
}
}
}
}
|
********************************************************************************
********************************************************************************
'/' 應用程式中發生伺服器錯誤。
無法載入檔案或組件 'cli_cppuhelper' 或其相依性的其中之一。 試圖載入格式錯誤的程式。
描述: 在執行目前 Web 要求的過程中發生未處理的例外狀況。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。
例外狀況詳細資訊: System.BadImageFormatException: 無法載入檔案或組件 'cli_cppuhelper' 或其相依性的其中之一。 試圖載入格式錯誤的程式。
原始程式錯誤:
在執行目前 Web 要求期間,產生未處理的例外狀況。如需有關例外狀況來源與位置的資訊,可以使用下列的例外狀況堆疊追蹤取得。 |
組件載入追蹤: 下列資訊在確定為何無法載入組件 'cli_cppuhelper' 時是有幫助的。
=== 繫結前狀態資訊 ===
記錄: DisplayName = cli_cppuhelper
(Partial)
警告: 提供了組件的部分繫結資訊:
警告: 組件名稱: cli_cppuhelper | 網域 ID: 2
警告: 如果只提供部分的組件顯示名稱,就會發生部分繫結。
警告: 這可能會使繫結器載入不正確的組件。
警告: 建議為組件提供完全指定的文字識別,
警告: 該識別是由簡單名稱、版本、文化特性和公開金鑰語彙基元組成。
警告: 如需詳細資訊和這個問題的一般解決方法,請參閱白皮書 http://go.microsoft.com/fwlink/?LinkId=109270。
記錄: Appbase = file:///C:/CodeTemp4/WebApplication1/WebApplication1/
記錄: 初始 PrivatePath = C:\CodeTemp4\WebApplication1\WebApplication1\bin
正在呼叫組件 : (Unknown)。
===
記錄: 此繫結在 default 載入內容中開始。
記錄: 正在使用應用程式組態檔: C:\CodeTemp4\WebApplication1\WebApplication1\web.config
記錄: 使用主機組態檔: C:\Users\Administrator\Documents\IISExpress\config\aspnet.config
記錄: 從 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config 使用電腦組態檔。
記錄: 目前不會套用原則至參考 (私用、自訂、部分或以位置為主的組件繫結)。
記錄: 正在嘗試從新的 URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/vs/79e525c4/a5ece37c/cli_cppuhelper.DLL 下載。
記錄: 正在嘗試從新的 URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/vs/79e525c4/a5ece37c/cli_cppuhelper/cli_cppuhelper.DLL 下載。
記錄: 正在嘗試從新的 URL file:///C:/CodeTemp4/WebApplication1/WebApplication1/bin/cli_cppuhelper.DLL 下載。
錯誤: 無法完成組件的安裝 (hr = 0x8007000b)。已終止探查。
|
堆疊追蹤:
[BadImageFormatException: 無法載入檔案或組件 'cli_cppuhelper' 或其相依性的其中之一。 試圖載入格式錯誤的程式。]
System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +37
System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +159
System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +80
System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +22
System.Reflection.Assembly.Load(String assemblyString) +29
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38
[ConfigurationErrorsException: 無法載入檔案或組件 'cli_cppuhelper' 或其相依性的其中之一。 試圖載入格式錯誤的程式。]
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +726
System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +196
System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +45
System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +172
System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +91
System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +111
System.Web.Compilation.BuildManager.ExecutePreAppStart() +156
System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +695
[HttpException (0x80004005): 無法載入檔案或組件 'cli_cppuhelper' 或其相依性的其中之一。 試圖載入格式錯誤的程式。]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +660
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +89
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +189
|
版本資訊: Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.8.4762.0
********************************************************************************
無法載入檔案或組件 'cli_cppuhelper' 或其相依性的其中之一。 試圖載入格式錯誤的程式。
ChatGPT 說:
這個錯誤通常是由於程式或函式庫的版本不相容或安裝錯誤引起的。cli_cppuhelper 組件常與 OpenOffice 或 LibreOffice API 有關,尤其是在.NET 應用程式中。以下是一些可能的解決方案:
確認程式和函式庫版本相容:檢查 cli_cppuhelper 所屬的函式庫版本與您使用的 .NET 版本是否相容。例如,如果您使用的是 32 位元版本的函式庫,確保您的應用程式也針對 32 位元進行編譯(64 位元同理)。
安裝或重新安裝必須的函式庫:如果您在使用 LibreOffice 或 OpenOffice SDK,請確認其已安裝,並且將其路徑包含在專案的參考中。
設定正確的應用程式架構:在 Visual Studio 中,設定專案的目標架構(x86 或 x64)來符合所安裝的函式庫架構。
清除與重建專案:有時候重新清理並重建專案可以解決這類錯誤。在 Visual Studio 中,選擇 建置 -> 清除方案,然後重新建置。
若問題仍然存在,您可以檢查專案中的內部例外錯誤訊息,以獲取更多詳細的問題資訊。
********************************************************************************
過往使用 LibreOffice SDK 或 OpenOffice SDK 經驗不佳,不想測試了。
********************************************************************************
(完)
相關
[研究]ASP.NET,WebForm,使用 OfficeConverter 1.7.10 轉換 .ods 和 .xlsx
https://shaurong.blogspot.com/2024/10/aspnetwebform-officeconverter-1710-ods.html
[研究] [C#] 使用 LibreOffice 6.2.6 SDK、OpenOffice 4.1.6 SDK讀取/寫入試算表(Calc) 檔案 (.ods)
https://shaurong.blogspot.com/2019/08/c-libreoffice-626-sdk-calc-ods.html[研究] [C#] 使用 OpenOffice 4.1.3 SDK 讀取試算表(Calc) 檔案 (.ods)
http://shaurong.blogspot.com/2016/12/c-openoffice-413-sdk-calc-ods.html[研究] [C#] 使用 LibreOffice 5.1.6、5.3.0 SDK 讀取試算表(Calc) 檔案 (.ods)
http://shaurong.blogspot.com/2016/12/c-libreoffice-516-sdk-calc-ods.html[研究] [C#] 讀取 LibreOffice、OpenOffice 的試算表(Calc) 檔案 (.ods)(使用 .NET 4.5 的 ZipFile)
http://shaurong.blogspot.com/2016/12/c-libreoffice-516-calc-ods-net-45.html