将TCL中的datevariables传递给excel

我试图在这个格式中指定date值YYYY-MM-DD hh:mm:ss在Excel中的特定单元格中,我使用TCL打开Excel并parsing值,最后将值推送到Excel中的单元格,最后将其保存为CSV格式,

例如,当我试图将2012-09-10 00:00:00分配给Excel中的特定单元格时,我发现Excel将其转换为2012年9月10日0:00。 有什么办法来closures从TCL的Excel中的自动格式化选项?

这是我的示例代码:

proc get_date { } { set date "2012-09-10 00:00:00" return $date } set application [::tcom::ref createobject "Excel.Application"] set workbooks [$application Workbooks] $application DisplayAlerts False set workbook [$workbooks Open "c:\\test\\dir\\filename.csv"] set worksheets [$workbook Worksheets] set worksheet [$worksheets Item [expr 1]] set cells_worksheet1 [$worksheet Cells] $cells_worksheet1 Item 5 B [get_date] $workbook Save $application Quit 

我不认为有办法做到这一点。 这里有类似的讨论:

  • Excel更改date格式
  • 如何禁用Excel自动识别数字和文本
  • 在Excel中格式化csv文件

单引号方法仅在导出期间工作,而不是导入 。 我正在使用Excel 2010,并保留优先8行空白方法也没有为我工作。

您需要设置您想要处理的单元格范围的NumberFormat属性为Text (而不是默认的General ,它会猜测和更改内容):

 set cell [$cells_worksheet Item 5 B] $cell NumberFormat "Text" $cell Text [get_date] 

我只能在string的开头添加一个撇号(')来绕过这个格式,

正如已经解释过的 ,CSV不支持任何格式化 – 这是纯文本格式。 这意味着,无论您设置在表单单元格中的date/时间值的格式设置是什么,Excel将该表单保存为CSV文件时,格式化都将丢失,因为无法将其存储在CSV文件中。

简而言之:停止使用CSV来存储您的数据,并使用本机格式(XLS [X])或停止尝试使CSV处理它不能。