gpt4 book ai didi

excel - Powershell 批量导出/将 Excel 转换为 TXT (unicode)

转载 作者:行者123 更新时间:2023-12-03 01:03:47 28 4
gpt4 key购买 nike

目标是将目录(带有子文件夹)中的所有 xls 文件转换为 txt(unicode),将 txt 保存在与原始 xls 文件相同名称的相同位置。
我有这样的,不工作:

$files = Get-ChildItem D:\test\*.xls -recurse
Write "Loading Files..."

$Excel = New-Object -ComObject Excel.Application
$Excel.visible = $false
$Excel.DisplayAlerts = $false

ForEach ($file in $files)
{
$WorkBook = $Excel.Workbooks.Open($file.Fullname)
$NewFilepath = $file.Fullname -replace ".{4}$"
$NewFilepath = $NewFilepath + ".txt"
$Workbook.SaveAs($NewFilepath,42)
}
Stop-Process -processname EXCEL
$Excel.Quit()

它给出了异常(exception):
No access to 'FileName.txt'.
At line:13 char:6
+ $Workbook.SaveAs($NewFilepath,42)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException

最佳答案

我认为这与您在退出 Excel 进程之前终止它的方式有关。
试试这个方法:

$files = Get-ChildItem D:\test\*.xls -recurse

$Excel = New-Object -ComObject Excel.Application
$Excel.visible = $false
$Excel.DisplayAlerts = $false

ForEach ($file in $files) {
Write "Loading File '$($file.Name)'..."
$WorkBook = $Excel.Workbooks.Open($file.Fullname)
$NewFilePath = [System.IO.Path]::ChangeExtension($file.Fullname,".txt")
$Workbook.SaveAs($NewFilepath, 42) # xlUnicodeText
}

# cleanup
$Excel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($WorkBook) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Excel) | Out-Null
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()

如您所见,我还更改了创建新文件名的方法,使用 [System.IO.Path]::ChangeExtension()方法。如果在某一时刻您必须处理 .xlsx,这将更容易。文件。

此外,始终 发布 ComObjects 使用后(底部的四行会处理)

关于excel - Powershell 批量导出/将 Excel 转换为 TXT (unicode),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52205541/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com