.

iT邦幫忙

2

請問如何使用powershell,在xlsx中嵌入zip檔案?

  • 分享至 

  • xImage
# # 定义Excel文件路径
$currentPath = Get-Location

# 请根据你的实际路径修改下面的文件路径
$excelPath = "$currentPath\活頁簿1.xlsx"
$zipFilePath = "$currentPath\Desktop.zip"

# 创建 Excel 应用程序对象
$excel = New-Object -ComObject Excel.Application

# 创建一个新的工作簿
$workbook = $excel.Workbooks.Add()

# 选择第一张工作表
$worksheet = $workbook.Worksheets.Item(1)

# 插入 OLE 对象
# 使用 AddOLEObject 方法,类型为“package”
$oleObject = $worksheet.OLEObjects().Add(
    "package",
    $zipFilePath,
    $null, # 无法直接指定 True/False,将 null 传递以避免弹框
    $null,
    $null, 
    $null,
    50, 50, # 位置,可以根据需要调整
    100, 100 # 大小,可以根据需要调整
)

# 显示 Excel 应用程序,如果需要可将下面一行设置为 $true
$excel.Visible = $false

# 保存工作簿
$workbook.SaveAs($excelPath)

# 关闭工作簿
$workbook.Close($false)

# 退出 Excel 应用程序
$excel.Quit()

# 释放 COM 对象
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($oleObject)
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($worksheet)
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($workbook)
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)

# 提供垃圾回收
[GC]::Collect()
[GC]::WaitForPendingFinalizers()

如題以上為open ai產出的code,但我試過之後會跳出以下錯誤

InvocationError: 無法取得類別 OLEObjects 的 Add 屬性

想請教大家是否有解法,謝謝

看更多先前的討論...收起先前的討論...
淺水員 iT邦大師 6 級 ‧ 2025-03-27 21:16:52 檢舉
「嵌入zip檔案」是指下列哪種狀況?
1. 使用者開啟 xlsx 可以點擊下載這個壓縮檔
2. 把壓縮檔藏在 xlsx 中,偽裝成一般檔案,可以透過解壓縮軟體把檔案找出來
以系統管理員權限執行PS1
lazyzu iT邦新手 5 級 ‧ 2025-03-28 08:50:46 檢舉
可以試試看把塞OleObject置換成以下程式碼
$missing=[System.Type]::missing
$oleObject = $worksheet.Shapes.AddOLEObject($missing #ClassType
, $zipFilePath #Filename
, $false #Link
, $false #DisplayAsIcon
, $missing #IconFileName
, $missing #IconIndex
, $missing #IconLabel
, 50, 50 #Left, Top
, 100, 100)#Width, Height

參數說明可以參考
https://learn.microsoft.com/en-us/office/vba/api/excel.oleobjects.add#parameters
另外如果會撰寫C# 程式,建議可以使用ClosedXML移除對Excel程式的依賴
我也有開發嵌入檔案的nuget套件,非常歡迎使用與回饋喔~
https://www.nuget.org/packages/lazyzu.ClosedXML.Extension.EmbeddedObject
freshjs iT邦新手 5 級 ‧ 2025-03-28 16:14:45 檢舉
回復 淺水員老師
是 1.使用者開啟 xlsx 可以點擊下載這個壓縮檔
freshjs iT邦新手 5 級 ‧ 2025-03-28 16:15:30 檢舉
回復 japhenchen老師
謝謝您,我試試看
freshjs iT邦新手 5 級 ‧ 2025-03-28 16:18:09 檢舉
回復 lazyzu 老師
感謝您!這個做法可以成功插入了
.

尚未有邦友回答

立即登入回答