1

我正在尝试以这种格式 YYYY-MM-DD hh:mm:ss 在 excel 的特定单元格中分配日期值,我使用 TCL 打开 excel 并解析值,最后将值推送到 excel 中的单元格,最后将其保存为CSV格式,

例如,当我尝试将 2012-09-10 00:00:00 分配给 excel 中的特定单元格时,我看到 excel 将其转换为 9/10/2012 0:00。有没有办法从 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
4

4 回答 4

0

我可以通过在字符串的开头添加一个撇号 (') 来绕过格式,这只是日期,

于 2012-09-12T21:46:07.070 回答
0

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

单引号方法仅在export期间有效,在import期间无效。我正在使用 Excel 2010,keep-first-8-rows-blank 方法对我也不起作用。

于 2012-09-12T19:22:42.647 回答
0

您需要设置NumberFormat要处理的单元格范围的属性Text(而不是默认值,General,它会猜测和改变事物):

set cell [$cells_worksheet Item 5 B]
$cell NumberFormat "Text"
$cell Text [get_date]
于 2012-09-12T19:23:10.967 回答
0

正如已经解释过的,CSV 不支持任何格式——它是一种纯文本格式。这意味着无论您设法在工作表单元格上为其日期/时间值设置哪种格式,当 Excel 将此工作表保存到 CSV 文件时,格式都会丢失,因为无法将其存储在 CSV 文件中。

简而言之:停止使用 CSV 存储您的数据并使用本机格式 (XLS[X]) 或停止尝试让 CSV 处理它无法处理的问题。

于 2012-09-13T09:37:52.890 回答