2012-04-06 77 views
0

命令$ cells Item 2 A {SomeText}不設置單元格A2中的文本,而是分配單元格A1中的文本。任何想法爲什麼它的行爲如此?使用TCOM在Excel中指定單元

   set application [::tcom::ref createobject "Excel.Application"] 
       set XlFileFormat(xlCSV) [expr 6] 
       set workbooks [$application Workbooks] 
       set workbook [$workbooks Add] 
       $application DisplayAlerts False 
       set worksheets [$workbook Worksheets] 
       set worksheet [$worksheets Item [expr 1]] 
       set cells [$worksheet Cells] 
      $cells Item 2 A {Range} 


       $workbook SaveAs {c:\test.csv} $XlFileFormat(xlCSV)  
       $application Quit 
+0

它使用不同的數字時會發生什麼,例如「4 A」? – Marc 2012-04-06 16:29:37

+0

它只是放置在A1單元格中的所有東西。這是因爲我猜的CSV格式...不太確定爲什麼這是行爲奇怪... – user1270123 2012-04-06 16:37:27

+0

在這個例子中,我看不到如何保存文件。第2行只是將數組的成員設置爲整數6,就是這樣。另一方面,您可以添加工作簿,然後添加工作表並修改它。我有一種模糊的感覺,當Excel告訴它保存你填充的內容時,Excel可能會保存其他內容,因爲CSV只是一個矩陣,它不知道任何有關工作表和工作簿的信息。 – kostix 2012-04-06 16:48:03

回答

1

好的,下面是一個解釋:當保存爲CSV時,Excel似乎只保存在(虛擬化)工作表網格中形成「邊界框」的數據。換句話說,你沒有修改第一行單元格中的任何數據,因此它不會被保存。

這個簡單的程序(JScript中爲WSH):

var app = new ActiveXObject("Excel.Application"); 
var wbs = app.Workbooks; 
var wb = wbs.Add; 
var wss = wb.Worksheets; 
var ws = wss.Item(1); 
var cells = ws.Cells; 

app.DisplayAlerts = false; 

cells.Item(2, "B") = "B2"; 
cells.Item(2, "C") = "C2"; 
cells.Item(3, "B") = "B3"; 
cells.Item(3, "C") = "C3"; 

wb.SaveAs("foo.csv", 6); 
app.Quit(); 

它設置佈置成矩形塊由一列,並從片材的左上角一個行偏移的四個單元,產生這個CSV文件:

B2,C2 
B3,C3 
相關問題