我使用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.JJJJhh:mm”。如果创建了图表,Excel会将其用作默认值。这种格式对DE-DE有效,即使在Excel本地化中也可能是未知的。
答案 0 :(得分:2)
问题不在于数字格式。
您需要先将轴类型设置为Text,然后才能向其添加日期并在其上应用自定义格式(带时间位)。
这有效:
$chart.Axes(1).CategoryType =2
$axis= $chart.axes(1)
$axis.TickLabels.NumberFormat = "DD.MM. hh:mm"
如果您将Axix类别保留为默认/自动,数字格式不会按预期工作。
$axis= $chart.axes(1)
$axis.TickLabels.NumberFormat = "DD.MM. hh:mm"
您的数字格式中有时间格式,除了散点图之外,没有其他任何内容支持在轴上。所以你需要先改变你的轴类型。
答案 1 :(得分:0)
使用NumberFormatLocal
代替NumberFormat
来获取/设置本地化格式:
$axis.TickLabels.NumberFormatLocal = $fmt