使用 Excelcnv.exe 转换或修复 Excel 文件需要哪些参数?

使用 Excelcnv.exe 转换或修复 Excel 文件需要哪些参数?

我需要使用 Excelcnv.exe 来修复未正确编码的 .xlsx 文件。我听说-oice可以使用该参数。

微软似乎没有提供有关该可执行文件的任何详细信息。

其他详细信息:其他应用程序(例如 Alteryx)无法打开和处理由第三方应用程序生成的某些 .xlsx 文件。它们会显示文件损坏错误。但是,我可以在 Excel 中打开并保存它们。在 Excel 中保存后,文件不再显示损坏,并且可以处理。我假设 Excel 会添加/修复所有必要的编码。

我知道 Excelcnv.exe 可用于修复编码,特别是使用 -oice 参数。

答案1

第一次尝试

# change the path to match your Office installation
$excelcnv = "C:\Program Files (x86)\Microsoft Office\root\Office16\excelcnv.exe"
& $excelcnv -oice "C:\CorruptedFile.xlsx" "C:\CorrectedFile.xlsx"

如果这不能解决问题,但在 Excel 中打开并保存可以解决问题,您可以执行以下操作:

$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$excel.DisplayAlerts = $false

$xlFiles = (Get-ChildItem -Path 'C:\PathToTheXlsxFiles' -Filter '*.xlsx' -File).FullName
foreach ($file in $xlFiles) {
    $workbook = $excel.Workbooks.Open($file )
    # save the file and close the workbook
    $workbook.Close($true)  # $true means 'save the changes'
}
$excel.Quit()

# Important! release the COM objects from memory
$null = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($workbook)
$null = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()

当然,最好的办法是更新/修复输出这些损坏文件的应用程序。您可以就此事联系您的供应商吗?

相关内容