2024年10月28日 星期一

[研究]ASP.NET,WebForm,使用 OfficeConverter 1.7.10 轉換 .ods 和 .xlsx

[研究]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

[研究] [C#] 使用 Apose.Cells 讀取 LibreOffice 5.1.6、OpenOffice 4.1.3 試算表(Calc) 檔案 (.ods)
http://shaurong.blogspot.com/2017/01/c-aposecells-libreoffice-516openoffice.html

[研究] [C#] 使用 GemBox.Spreadsheet 讀取LibreOffice、OpenOffice試算表(Calc) 檔案 (.ods)
http://shaurong.blogspot.com/2016/12/c-gemboxspreadsheet-libreofficeopenoffi.html

[研究] OpenOffice 4.1.3 試算表(Calc) 保護鎖定儲存格不被修改
http://shaurong.blogspot.com/2016/12/openoffice-413-calc.html

[研究] 使用OpenOffice 4.1.3試算表(Calc)建立「下拉式選單」來輸入資料
http://shaurong.blogspot.com/2016/12/openoffice-413calc.html

沒有留言:

張貼留言