程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了从 PowerScript 检查 Excel 文件格式,不依赖于文件扩展名大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决从 PowerScript 检查 Excel 文件格式,不依赖于文件扩展名?

开发过程中遇到从 PowerScript 检查 Excel 文件格式,不依赖于文件扩展名的问题如何解决?下面主要结合日常开发的经验,给出你关于从 PowerScript 检查 Excel 文件格式,不依赖于文件扩展名的解决方法建议,希望对你解决从 PowerScript 检查 Excel 文件格式,不依赖于文件扩展名有所启发或帮助; @H_675_2@我们有许多以 .xLSX 或 .xlsm 格式存储的 Excel 文件。不幸的是,文件扩展名的最后一个字母被丢弃在另一个 IT 系统中,因此它们的文件扩展名都为 .xls。但我们也有以 .xls 格式存储的 Excel 文件。

@H_675_2@我需要编写一个 PowerSHell 脚本来检测实际的 Excel 文件格式,然后重命名文件,使其文件扩展名适合内容。我们有数千个这样的文件,因此无法手动选择。

@H_675_2@我找到了有关如何区分 .xls 和较新的 XML 格式(如 .xLSX 和 .xlsm)的信息(通过检查文件中的第一个字符)。 但我还@R_772_10739@任何关于如何确定它是 .xLSX 还是 .xlsm 的信息。

@H_675_2@有什么想法吗?

解决方法

@H_675_2@我快速检查了 xLSXxlsm 文件的内容类型。 仅供参,excel文件是包含各种信息和内容的档案。

@H_675_2@您可以做的是解压缩两个文件并检查文件 [Content_Types].xml

@H_675_2@XLSX 具有:

@H_675_2@<Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>

@H_675_2@而 XLSM 有:

@H_675_2@<Override PartName="/xl/workbook.xml" ContentType="application/vnd.ms-excel.sheet.macroEnabled.main+xml"/>

@H_675_2@从这里你可以继续前进:)

, @H_675_2@我在检查 [Content_Types].xml 文件时发现了与 Grzegorz 类似的东西。当文件中有 vba 项目时,将存在以下条目

<Default
    Extension="bin"
    ContentType="application/vnd.ms-office.vbaProject"
@H_675_2@这是我写的一些简单的代码来检查这个条目是否存在

$excelFile = 'C:\temp\macro_workbook.xlsm'
$archive = Expand-Archive $excelFile -DesTinationPath "c:\temp\$(Split-Path $excelFile -LeafBasE)" -PassThru -Force

$contentTypesFile = $archive | Where-Object name -EQ '[Content_Types].xml'
$xml = [xml](Get-Content -LiteralPath $contentTypesFilE)

if ($xml.types.default.extension -contains 'bin') {
    Write-Host 'VBA project found - xlsm file'
}
else {
    Write-Host 'Not a VBA project'
}

大佬总结

以上是大佬教程为你收集整理的从 PowerScript 检查 Excel 文件格式,不依赖于文件扩展名全部内容,希望文章能够帮你解决从 PowerScript 检查 Excel 文件格式,不依赖于文件扩展名所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。