一旦我想出如何去做,結果是非常簡單。我使用OLE嵌入代替DDE。嵌入將Excel工作簿變成類似於Unix tar文件或Windows zip文件的東西:您有一個文件包含其中的其他文件。
首先,我將XML文本寫入一個臨時文件,其擴展名爲.sqlplan
。其次,我把這個代碼:
$object = $ws.OLEObjects().Add(
[System.Type]::missing, # ClassType
$path, # FileName
$false, # Link
$false, # DisplayAsIcon
[System.Type]::missing, # IconFileName
[System.Type]::missing, # IconIndex
[System.Type]::missing, # IconLabel
[System.Type]::missing, # Left
[System.Type]::missing, # Width
[System.Type]::missing, # Height
[System.Type]::missing # Top
)
凡$path
點到臨時文件。第三,我刪除了臨時文件。 (因爲「鏈接」參數是$false
,所以XML文件的副本現在是工作簿的一部分。)
這可能是馬丁史密斯在上面提出的評論中提到的,但當時我明白他是稱.sqlplan
文件將作爲普通文件存儲在工作簿之外。另請注意,這可能適用於任何想要嵌入電子表格的文件!
我沒有在創建時設置大小和位置的原因是因爲在這一點上你不能使其成爲正方形。我按照上面的代碼這一點,使「鏈接」填充單元格是在:
$object.ShapeRange.LockAspectRatio = $false
$cell = $range.Cells($cellRow, $cellColumn)
$object.Left = $cell.Left
$object.Width = $cell.Width
$object.Height = $cell.Height
$object.Top = $cell.Top
如果您創建的顯示計劃作爲單獨文件以'.sqlplan'擴展然後就超到它應該打開文件自動啓動默認應用程序。 –
我一直希望保持Excel工作手冊的獨立性,但另一方面,您的方法是我知道該怎麼做的。 –