【问题标题】:Format Chart DataLabel in Powershell generated Excel File在 Powershell 生成的 Excel 文件中格式化图表 DataLabel
【发布时间】:2019-05-24 08:54:50
【问题描述】:

尝试使用 powershell 生成的条形图格式化 datalabel 字体大小,但不起作用

阅读适用于 VBA 和 .NET 的 Chart.SeriesCollection 的“完整”API。但这无济于事。是虫子还是我脑子有虫?谁能帮忙?

https://docs.microsoft.com/de-de/office/vba/api/excel.chart.seriescollection

我的尝试(对此有不同的迭代)

$chart.SeriesCollection(1).DataLabels.Format.TextFrame2.TextRange2.Font.Size = 18

Powershell 错误消息:在此对象上找不到属性“大小”。验证该属性是否存在并且可以设置。

整个简短的 powershell 脚本:

$excel = New-Object -comobject Excel.Application
$excel.Visible = $True
$workbook = $excel.Workbooks.Add()
$sheet = $excel.Worksheets.Item(1)
$sheet.Activate() | Out-NULL

$sheet.Cells.Item(1,1).Value2 = "City"
$sheet.Cells.Item(1,2).Value2 = "Citizens"
$sheet.Cells.Item(2,1) = "Offenbach"
$sheet.Cells.Item(2,2) = 111020
$sheet.Cells.Item(3,1) = "Heusenstamm"
$sheet.Cells.Item(3,2) = 18200
$sheet.Cells.Item(4,1) = "Rembruecken"
$sheet.Cells.Item(4,2) = 1850

$range = "A1:B4"
$chartSelect = $sheet.range($range)
$ch = $sheet.shapes.addChart().chart
$ch.chartType = 51

$ch.ApplyDataLabels(2)
$ch.SeriesCollection(1).DataLabels.Format.TextFrame2.TextRange2.Font.Size = 18
$ch.setSourceData($chartSelect)

【问题讨论】:

  • 请添加更多代码,以便我们尝试重现它...

标签: excel powershell charts format


【解决方案1】:

试试这个?

1..3| %{$ch.SeriesCollection(1).DataLabels($_).Font.Size = 18}

【讨论】:

  • 难以置信,这可行!
【解决方案2】:

有几种语法应该可以工作。

您需要在 VBIDE 的对象浏览器中选择“显示隐藏的成员”来查看旧的(好像它已被弃用,但它工作正常):

ActiveChart.SeriesCollection(2).DataLabels.Font.Size = 18

新的、改进的、更复杂的:

ActiveChart.SeriesCollection(2).DataLabels.Format.TextFrame2.TextRange.Font.Size = 18

我会让你从 VBA 转换为 PowerShell。

【讨论】:

    猜你喜欢
    • 2020-03-27
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    相关资源
    最近更新 更多