从字符串变量分配Excel数字格式

问题描述 投票:3回答:2

我使用PowerShell脚本创建Excel工作簿。工作簿包含两个轴的图表。一个轴的数字格式应设置为本地化的自定义日期时间格式。

标准格式是作为长日期格式的较短版本准备的:

[string]$fmt = "MM/dd hh:mm"

该脚本评估自动创建的轴NumberFormat成员,如果NumberFormat已经本地化,则使用不同的字符串:

if ($axis.TickLabels.NumberFormat.Contains("JJJJ")) {
  $fmt = "TT.MM. hh:mm"
}

最后,脚本尝试将字符串分配给轴成员:

 $axis.TickLabels.NumberFormat = $fmt

但是轴对象不接受这种格式。如果我读回值,我会得到“标准”。

即使这段代码也将数字格式重置为标准:

 $fmt = $axis.TickLabels.NumberFormat
 $axis.TickLabels.NumberFormat = $fmt

如何设置自定义日期时间格式?

编辑:本地化DE-DE的标准日期时间格式为“TT.MM.JJJJ hh:mm”。如果创建了图表,Excel会将其用作默认值。即使在Excel本地化中可能未知,该格式也适用于DE-DE。

excel vba excel-vba powershell
2个回答
0
投票

使用NumberFormatLocal而不是NumberFormat来获取/设置本地化格式:

$axis.TickLabels.NumberFormatLocal = $fmt

2
投票

问题不在于数字格式。

您需要先将轴类型设置为Text,然后才能向其添加日期并在其上应用自定义格式(带时间位)。

这有效:

$chart.Axes(1).CategoryType =2
$axis= $chart.axes(1)
$axis.TickLabels.NumberFormat = "DD.MM. hh:mm"

就像您将Axis类别保留为默认/自动一样,数字格式无法按预期工作。

$axis= $chart.axes(1)
$axis.TickLabels.NumberFormat = "DD.MM. hh:mm"

您的数字格式具有时间格式,除了散点图之外,在轴上没有其他任何支持。所以你需要先改变你的轴类型。

© www.soinside.com 2019 - 2024. All rights reserved.