我正在尝试以这种格式分配日期值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
答案 0 :(得分:0)
我认为没有办法做到这一点。以下是类似的讨论:
单引号方法仅适用于导出,而非导入。我正在使用Excel 2010,并且保留第一个8行空白方法对我来说也不起作用。
答案 1 :(得分:0)
您需要将要处理的单元格区域的NumberFormat
属性设置为Text
(而不是默认的General
,它会猜测并更改内容):< / p>
set cell [$cells_worksheet Item 5 B]
$cell NumberFormat "Text"
$cell Text [get_date]
答案 2 :(得分:0)
我能够通过在字符串的开头添加撇号(')来绕过格式,这只是日期,
答案 3 :(得分:0)
作为already have been explained,CSV不支持任何格式的任何内容 - 它是纯文本格式。这意味着无论您设置在工作表单元格上设置哪种格式的日期/时间值,当Excel将此工作表保存为CSV文件时,格式化将丢失,因为无法将其存储在CSV文件中。
简而言之:停止使用CSV存储数据并使用原生格式(XLS [X])或停止尝试使用CSV处理它无法处理的数据。