将date导出到Csv并告诉excel的格式

我的程序(C#.Net 4.5)必须能够生成一些可以加载到Excel中的报告。 我select导出为.csv格式的报告,因为它是导出为ex​​cel格式的最简单的方式。 而且它并不要求运行我的程序的机器上安装Excel。

我的问题是导出date。

我的程序将运行在客户电脑上,可能(很可能)有不同的方式显示date,这意味着Excel的期望date在不同的格式。

我目前的解决scheme是导出date为:

DateTime LogTime = DateTime.Now; String TimeFormat = //The format for the specific location, like: "HH:mm:ss dd/MM-yyyy" //To csv: // ="10:24:13 27-05-2014" String reportTime = "=\""+LogTime.ToString(TimeFormat)+"\""; 

这个问题是我根据不同的位置创build不同的文件。 因此,从一个位置向另一个位置发送文件可能会导致date错误。

我的问题是,有没有办法告诉Excel我的date格式是什么? 就像是:

 //To csv: // =DateFormatted(10:24:13 27-05-2014,HH:mm:ss dd/MM-yyyy) String reportTime = "=DateFormatted(" + LogTime.ToString(TimeFormat) + "," + TimeFormat + ")"; 

然后Excel知道如何阅读date,而不必担心不同的位置。

以yyyy-MM-dd HH:mm:ss格式导出​​date

当你保存到CSV,恐怕没有。

但是你可以使用yyyy/MM/dd hh:mm:ss格式。 正如我所知,这将适用于所有文化。

根据我的经验,开源的NPOI库( https://npoi.codeplex.com/ )非常适合这个。

  • 你可以导出/从Excel导入/导出数据,Word导出数据
  • 他们不需要在机器上安装Excel
  • 支持xls和xlsx格式
  • 完全控制格式
  • 总的来说,更多的function比以往任何时候都可能与csv