2012-03-07 63 views
0

我想寫一些數據從TCL到CSV文件,但我得到0x800a03ec {SaveAs方法的工作簿類失敗}執行時。任何想法爲什麼發生這種情況?0x800a03ec {SaveAs方法的工作簿類失敗}錯誤在TCOM/TCL

set application [::tcom::ref createobject "Excel.Application"] 
$application Visible 1 

set workbooks [$application Workbooks] 
set workbook [$workbooks Add] 
set worksheets [$workbook Worksheets] 
set worksheet [$worksheets Item [expr 1]] 
#set worksheet [$worksheets Item "Sheet1"] 
set cells [$worksheet Cells] 

set rows [array size atten] 
for {set row 1} {$row <= $rows} {incr row} { 
    $cells Item $row "B" $atten($row) 
} 

$workbook SaveAs Filename {c:\tst.csv} 
$application Quit 

回答

0

問題出在您的SaveAs行。它應該閱讀

$workbook SaveAs {c:\tst.csv} 

你也可能要改變從C的位置:\作爲往往不是一個可寫入的位置,。

+0

我試圖保存到不同的文件夾,也改變<=爲<但仍然收到相同的錯誤 – amateur 2012-03-07 21:48:10

+0

您是否改變了SaveAs行,正如我所說的?我能夠重現你的錯誤,並改變這條線修復它。 – TrojanName 2012-03-08 09:11:17

1

實際上,plain googling for this會產生很多可能的原因和解決方案(從手動設置輸出格式到達行限制以達到字符串長度限制等)。絕對肯定的是,這個異常與Tcl無關(因爲它只是來自Excel實例的COM編組),所以只需閱讀從搜索輸出鏈接的討論並查看適用於您的案例的內容即可。

+0

我可以用CSV格式寫入數據。但數據全部損壞。例如,當我用記事本打開數據時,數據已損壞,我的意思是我沒有看到用逗號分隔的數據。我用什麼方法將數據寫入CSV格式有問題嗎? – amateur 2012-03-07 22:34:21

+0

是,@amateur:Excel不會從其擴展中推斷出文件格式;相反,您必須對'SaveAs'使用雙參數調用,將所需的[格式代碼](http://msdn.microsoft.com/zh-cn/library/ff198017.aspx)作爲其第二個參數(6 in你的情況),請參閱[this](http://msdn.microsoft.com/en-us/library/h1e33e36.aspx)瞭解如何正確調用SaveAs。 – kostix 2012-03-08 04:24:47

+1

我必須補充一點,如果您僅使用Excel來生成CSV文件,與使用Tcllib中的「csv」包相比,這是一個非常糟糕的主意 - 無論是在性能方面還是在可移植性方面(我的意思是,跨越不同的Windows機器)和維護方面。我建議您最好花時間學習如何使用更合理的工具('csv'和'struct :: matrix'包)。 – kostix 2012-03-08 04:27:29

相關問題