4

我有一个 CSV 文件,其中有一个 DateTime 列,我使用 php 来更改它以使其采用这种格式,02/18/2013 03:53:48 PM

但是当这个文件在 excel 中打开时,所有的格式都变成了这个格式,02/18/2013 15:53

现在这对我来说查看或处理都不是问题,但我希望最终用户不必在 excel 中以 24 小时格式查看时间。一旦打开 csv 并允许最终用户对此 DateTime 列进行排序而没有任何问题,我如何使 excel 不改变我的格式。我知道一旦我打开文件,我可以通过格式化单元格来更改日期的格式,但我不希望最终用户甚至不得不采取这一步。

我还想指出,当我选择一个单元格时,公式栏将以我想要的格式显示我的 DateTime 列,这让我感到困惑。

4

3 回答 3

5

CSV 文件没有格式,它们只包含数据。

MS Excel 将检查该数据,并尝试为其设置适当的格式。例如,它右对齐数值。它可以识别包含人类可读日期/时间值的字符串,并将其转换为自己的内部时间戳值(表示为浮点数),然后将适当的日期/时间掩码应用于该单元格,使其样式为日期或时间,但不一定使用 CSV 文件中的字符串表示形式。

解决方案#1,在您的格式化日期字符串前面加上一个 = 符号并将其括在引号中,以便将其视为字符串。

解决方案#2,编写一个实际的 Excel 文件,您可以在其中控制单元格的格式。

于 2013-04-30T12:39:45.167 回答
1

如果您想控制最终 Excel 文件的格式,您需要将数据输出为该格式并使用 PHP Excel 库进行相应修改。我不能确切地告诉你如何做到这一点,因为我不知道你可能决定使用哪个库。

我已经使用http://phpexcel.codeplex.com/取得了一定程度的成功

如果您只是输出 CSV,则 Excel 将使用用户默认的格式设置打开它,这可能与您想要的不同。

于 2013-04-30T12:38:17.040 回答
0

他们显示时间的方式是 Windows 或 Office 中的设置(如果用户设置不同)。如果您想要的东西看起来像在打开时未由 Excel 应用程序格式化的日期/时间,那么您首先不应将其设为日期/时间。

Excel 将看到任何由单个直引号作为文本的内容,因此您可以将日期/时间值存储为"'02/18/2013 03:53:48 PM"

于 2013-04-30T12:49:26.813 回答