强制 Excel 2007 默认显示时间数据中的秒数

Posted

技术标签:

【中文标题】强制 Excel 2007 默认显示时间数据中的秒数【英文标题】:Force Excel 2007 to default to display seconds in time data 【发布时间】:2015-08-17 23:22:44 【问题描述】:

在工作中,我们经常使用以时间数据为一列的生成的 csv 文件,时间数据精确到最接近的秒。在 Excel 2007(在 Windows 7 上)中打开文件,显示默认为 m/d/yyyy hh:mm。如果我们保存文件(即使没有实际添加或更改任何数据),秒数据也会丢失,除非我们首先将格式更改为 m/d/yyyy hh:mm:ss。

有没有办法让 Excel 默认显示秒数据,这样我们就不用担心丢失秒数据了?

注意 - 这是关于 csv 文件的,因为生成这些文件并在之后对其进行操作的工具理解 csv 而不是 xls(x) 格式。

注意 2 - 我找到了 this answer,这似乎不起作用。

【问题讨论】:

是时间和日期还是只是时间?强制时间格式化的一个快速技巧是在数据中包含小数部分:00:00:01.00。但是,您将丢失日期部分。除此之外,我真的很难找到一种方法来做到这一点。即使更改默认工作簿样式(并强制将 Normal 格式化为 mm/dd/yyyy HH:mm:ss)也不够,因为 Excel 在打开 CSV 时会忽略该格式。但是,在将 CSV 导入为 Data->From Text 时它确实有效,但现在您的普通模板已经搞砸了,这不适合打开文件。 值得一提的是,Excel 可以正确读取此信息,但会使用单元格中应用的数字格式保存 CSV。由于默认不包括ss,因此默认情况下会删除该数据。我同意更改区域设置(短时间)不会影响默认显示格式。有趣的问题。我会关注是否有人可以解决这个问题。 正确 - 问题是保存而不丢失数据。我一直在手动执行此操作 - 每次都重新格式化以包含秒数,但我想要一些可以传递给我对 Excel 不太友好的同事的东西。 【参考方案1】:

您已经有了解决方案。 您可以在 PERSONAL.XLSB 中编写一个宏并指定一个热键。在 Excel 中打开 CSV 文件后,只需点击热键。

Sub Macro1()
'          
    Application.FindFormat.NumberFormat = "m/d/yyyy h:mm"
    Application.ReplaceFormat.NumberFormat = "m/d/yyyy h:mm:ss"
    Cells.Replace What:="", Replacement:="", LookAt:=xlPart, SearchOrder:= _
        xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=True
End Sub

或者您可以使用 Ctrl-H 调用“查找和替换”对话框并单击“格式...”并单击“全部替换”:

【讨论】:

我们的目标是避免有一些额外的步骤。担心的是,如果您在运行此代码之前不小心打开了文件并保存了文件,您将丢失数据。理想情况下,Excel 会以正确的格式打开文件,以防止保存后数据丢失。 尝试使用 addin、xla 或 xlam。插件中的代码可以是: 如果打开的文件是 csv,则扫描 usedRange 格式为 ... hh:mm 并将格式更改为 ... hh:mm:ss 而不提示用户。因此,一切都发生在幕后。【参考方案2】:

我成功地将这个公式应用于日期戳单元格:

=text(F3, "yyyy-mm-dd hh:mm:ss")

在 csv 中保留秒数并将 find 导入 mysql

【讨论】:

以上是关于强制 Excel 2007 默认显示时间数据中的秒数的主要内容,如果未能解决你的问题,请参考以下文章

poi 导出excel2007的时候,自动执行excel中的公式?

强制 HTML 显示来自 Python 模型对象的秒数

通过双击突出显示 MS excel 2007 中的单元格

怎么在excel2007中的列里显示最后一个有效字符串

带宏的excel无法在sharepoint上显示吗

excel2007柱状图数据标签没有“数据标签在外”这个选项,怎么添加